Author Archive

OpenWRT: Fazendo mágica com linux no roteador – Parte 1

Há um tempo atrás eu postei sobre o NAS que comprei e todas as facilidades que ele me proporcionou, mas o fato é que aquele modelo é meio fraquinho e não ter acesso direto ao sistema para customizar ou configurar é algo que me incomoda bastante.
Isso somado ao fato de precisar fazer uma rede meio maluca para um evento e eu estar reestruturando toda a rede da minha casa para suportar um servidor de media do Linux MCE (muitos posts por vir) me forçou a largar a preguiça e instalar o OpenWRT no meu roteador, se eu soubesse que aumentaria tanto o leque de possibilidades eu já teria feito antes. O OpenWRT é um software alternativo para o seu roteador que permite adicionar várias funções e melhorar a performance dele.Em primeiro lugar, para aqueles que já devem estar cheios de perguntas, uma noção básica da brincadeira.

 

Se você tem um roteador em casa você provavelmente já configurou ele, você acessou pelo navegador e definiu algumas coisas básicas como o nome da sua rede e a senha. O seu roteador tem uma série de funções que um HUB ou Switch (barato) não tem, como firewall, controle de tráfego, controle de endereços IP e outras coisas que quase ninguém usa, ele consegue cuidar de tudo isso porque na prática seu roteador é um computador, sim, um computador com memória processador e armazenamento, obviamente com placa de rede também. Hoje em dia todo eletrônico é um computador, sua TV, seu celular, o rádio de seu carro.
É óbvio que por ser tão pequeno, ser barato, consumir tão pouca energia e ter um papel tão simples como o de pegar um pacote de dados daqui e jogar para lá, esse computador é bem fraco, no meu caso eu uso vários roteadores mas vou pegar como cobaia o TP-Link TL-WR1043ND que tem um processador de 400MHz, 32MB de RAM e 8MB de armazenamento. Pode parecer pouco, mas esse é o hardware equivalente há um computador de 15 anos atrás ou um Smartphone básico de hoje.
Como qualquer computador ele tem um sistema operacional, normalmente no caso dos roteadores chamamos de Firmware mas esse termo não está completamente certo, um Firmware é um software normalmente pequeno e que não sofre constantes atualizações e que controla um dispositivo simples, como um controle remoto ou um drive de dvd. No caso do roteador e do seu celular estamos falando mesmo de um Sistema Operacional, mas como antigamente esses dispositivos eram realmente simples e evoluíram muito rápido continuamos usando o termo, isso não faz nenhuma diferença mas eu queria enfatizar que o Software do seu roteador não é tão diferente do que está sendo executado no seu computador nesse exato momento, e ele provavelmente é um Linux modificado.
Xbox Clássico rodando Linux

Xbox Clássico rodando Linux

O Linux é o sistema operacional livre mais popular do mundo e isso torna ele muito bom para essas coisas como roteadores e tvs, que precisam executar uma função muito especifica e muito bem (normalmente chamados de sistemas embarcados), porque ele pode ser modificado facilmente para atender a sua necessidade e é incrivelmente leve. Esse fato sozinho anula o mito de que o market share mundial do linux é 1% mas eu discutirei isso em outro post. Seu roteador provavelmente já roda um sistema Unix-Like como o Linux ou o BSD, então qual a vantagem de trocar o Software? O Sistema que está instalado hoje no seu roteador não te da acesso a diversas coisas como os arquivos internos, e isso é muito bom porque a maioria dos consumidores faria besteira se tivesse esse acesso, mas com isso você pode modificar o que quiser e, se tiver um conhecimento básico de programação, pode até escrever seus próprios programas para rodar no roteador.

 

Ainda não viu vantagem? então eu vou direto ao ponto: Você pode colocar o seu roteador para baixar os seus torrents 24h enquanto o seu computador está desligado…
Por que eu não disse antes não é mesmo? agora que você foi convencido vamos ao que interessa.

 

Eu ia explicar como configurar impressoras, scanners, servidor de mídia e outras coisas, mas o post ficou muito grande, então já estou providenciando uma continuação, por enquanto vou me limitar ao torrent, FTP e compartilhamento de rede.

 

Meu roteador suporta OpenWRT?

 

Não sei, veja se ele está na lista: http://wiki.openwrt.org/toh/start
TP-Link WR1043nd

TP-Link WR1043nd

Se você pretende trocar de roteador, independente de instalar o OpenWRT ou não, eu recomendo fortemente os da TP-Link, eu tive problemas com várias marcas e essa é uma que nunca me deu dor de cabeça, todos os meus roteadores, switches e hubs em uso são da TP-Link, eu realmente gosto da qualidade da marca e na minha opinião só perde para hardware da Cisco ou 3COM, mas ai estaríamos falando de coisa bem cara e para uso empresarial, para redes domesticas e pequenas empresas o melhor custo-beneficio é (na minha opnião) o TL-WR1043ND: Wireless B/G/N 300Mbps, Rede Gigabit e uma porta USB (muito útil) por cerca de 100 reais.
O software da TP-Link normalmente atende qualquer usuário comum, permite criar compartilhamento de arquivos a partir de um HD no USB, compartilhar a impressora e tudo que você precisa em termos de rede, se você vai instalar o OpenWRT de uma olhada na lista de hardware acima pois talvez você ache algum com processador e memória superiores e um preço convidativo, só não se esqueça da importância do USB (para ligar o HD externo), mas quase todos da TP-Link já possuem versões prontas do OpenWRT.

 

Instalando

 

A instalação do OpenWRT não tem grandes segredos na maioria das vezes, mas dependendo do modelo e versão do software você pode ter que instalar manualmente e configurar diversos pacotes, em versões antigas por exemplo eu tinha que instalar manualmente o WiFi, se tiver problemas de instalação procure o procedimento para o seu modelo especifico. Muito do que faremos não pode ser feito pela interface gráfica, então se você nunca usou linux eu recomendo que você pesquise um pouco e compreenda pelo menos os comandos cd e vi antes de prosseguir. Existem várias versões do OpenWRT mas a mais popular parece ser a Backfire, baixe a última versão para o seu roteador aqui: http://downloads.openwrt.org/backfire/ procure pela versão com factory no nome, as da tp-link estão em ar71xx/ , a minha por exemplo é o arquivo openwrt-ar71xx-tl-wr1043nd-v1-squashfs-factory.bin

 

ATENÇÃO!!! DRAGÕES A FRENTE!!!
normalmente é fácil reverter para o firmeware original, basta instalar a versão do fabricante, que normalmente você acha fácil no site do fabricante, mas dependendo da besteira que você fizer o processo para arrumar pode envolver desmontar e fazer hacks malucos de hardware, estou assumindo que você tem alguma noção de Linux para pelo menos não apagar o sistema, a chance de você fazer isso é baixa, mas vai que… alguém sempre consegue, melhor avisar… hehe.

 

Com o arquivo do OpenWRT em mãos acesse seu roteador e digite o usuário e senha, essa é a tela padrão do router que estou usando:

WR1043ND Firmware Default

Em System Tools / Firmware Upgrade escolha o arquivo do Firmware prossiga:

WR1043ND Firmware Update

Normalmente ele pedirá algum tipo de confirmação, aceite.

WR1043ND Firmware Update Confirm

O software será instalado e ele reiniciará.

WR1043ND Firmware Update Reboot

Apos o reboot o OpenWRT estará instalado e ao acessar o roteador a tela deverá ter mudado para essa interface:

OpenWRT

A primeira coisa que você deve fazer é criar uma senha para que seja possivel acessar o roteador por ssh e instalar o resto dos recursos.

OpenWRT

Nesse momento você deve ter acesso a uma interface administrativa similiar à que voce tinha no Firmware anterior, se desejar pare o tutorial agora e configure a sua rede, uma dica: o Wifi está desabilitado por padrão… você provavelemente vai precisar ativa-lo em Network / Wifi.

OpenWRT

Agora você deve ser capaz de acessar o roteador por SSH, se estiver no windows baixe o Putty, se utiliza Linux apenas digite “ssh root@ip”:

OpenWRT SSH

 

Aumentando o espaço em disco

 

Como você pode ver abaixo o roteador tem recursos muito limitados, principalmente em armazenamento que não aparece na imagem, apenas 8 MB, então será necessário estender o sistema para um HD externo, primeiro vamos preparar o HD.

OpenWRT

Você pode usar o sistema de arquivos que preferir, mas como normalmente precisamos conectar esse HD a uma maquina que rode windows, o único jeito é usar NTFS, você poderia usar a mesma partição NTFS para extensão do sistema, mas o desempenho fica horrível, então criaremos 3 partições no disco: uma SWAP para estender a memória, uma EXT4 para extensão o sistema de arquivos e uma NTFS para armazenamento, recomendo o uso do programa GParted para particionamento do disco, o meu ficou assim:

GParted

Eu recomendo 1GB para Swap, 1GB para o sistema e o resto para armazenamento, sabendo que isso ja é um exagero.

Se você não pretende retirar o HD do roteador nunca e só acessar os arquivos pela rede (Recomendado) use EXT4 para o armazenamento também, pois NTFS consome muito processamento.

depois de particionado o disco vamos instalar os módulos para o funcionamento do USB:

opkg update
opkg install kmod-usb-storage
opkg install block-mount
opkg install block-extroot
opkg install block-hotplug
opkg install ntfs-3g
opkg install kmod-fs-ext4<code>

se você pretende usar algum outro sistema de arquivos você vai precisar instalar ele, a lista completa dos sistemas de arquivo esta aqui http://wiki.openwrt.org/doc/howto/usb.storage

Plugue o HD e verifique se ele é reconhecido:

cd /dev
ls

Você deve ver os arquivos sda, sda1, sda2 e sda3, se não estiverem ai, algo esta errado.

Para quem não está acostumado com essa numeração, o linux reconhece os dispositivos no formato sdXY em que X é uma letra (normalmente a ou b) que indica o numero do disco, é Y um numero, contando a partir de 1, que representa a partição, por exemplo: sda1 = primeira partição do primeiro disco.

Devices

Agora vamos criar uma pasta para a partição de arquivos dentro de /mnt

cd /mnt
mkdir storage

Aqui ficarão todos os arquivos do torrent, agora vamos configurar as partições:

vi /etc/config/fstab

Abaixo como exemplo meu arquivo de configuração, verifique se o numero das partições (sdaX) é o mesmo que você utiliza.
config global automount
      option from_fstab 1
      option anon_mount 1

config global autoswap
      option from_fstab 1
      option anon_swap 0

config mount
      option device /dev/sda2
      option fstype ext4
      option options rw,sync
      option enabled 1
      option enabled_fsck 0
      option is_rootfs 1
      option target /errorinrootfs
config mount
      option target /mnt/storage
      option device /dev/sda3
      option fstype ntfs-3g
      option options rw,sync
      option enabled 1
      option enabled_fsck 0

config swap
      option device /dev/sda1
      option enabled 1

 

Repare que eu mudei todos os "option enable" para 1, o mount com a propriedade target é o que será montado para armazenamento e o com is_rootfs é o que estenderá o sistema,
mas essas partições ainda não estão prontas para serem usadas, primeiro precisamos copiar alguns arquivos para a de sistema.
mkdir /mnt/temp
mount -t ext4 /dev/sda2 /mnt/temp
tar -C /overlay -cvf - . | tar -C /mnt/temp -xf -
umount /mnt/temp
rmdir /mnt/temp
agora ative a montagem do hd durante o boot:
/etc/init.d/fstab enable 
e reinicie o roteador:

reboot

Se após o boot o fstab não estiver marcada como enable em "System / Startup" na interface web, o que aparentemente é comum, marque-o por ali:

uma coisa que você pode observar é que por algum motivo o fstab está com uma prioridade menor do que o USB, acredito que isso tem causado a instabilidade que alguns usuários comentaram comigo, e eu mesmo verifiquei problemas com o carregamento da memória swap, precisamos diminuir o valor em USB, altere a linha em /etc/init.d/usb de

START=39

para

START=15

por algum motivo depois disso os dois aparecem desabilitados, habilite-os:

ao reiniciar caso a pasta /errorinrootfs tenha aparecido isso indica um erro nas configurações, caso contrário deve estar funcionando, para verificar o espaço livre no seu roteador use o comando df que deve te mostrar algo parecido com isso:

Free Space

Para ver se a extensão da memória está funcionando digite:
free
o resultado deve ser esse:
Free

A unica coisa que não funcionou no meu roteador foi e led do USB na parte frontal, que até então eu nem sabia que ele tinha, como a configuração era muito complicada eu simplesmente ignorei isso e duvido que você sinta falta.

Para remover o HD pare todos os downloads e processos que usam o HD, mais para frente adicionaremos mais alguns, os processos podem ser parados pelo ssh ou pela interface web em "System/startup", se possível desligue o roteador antes de remover, para inseri-lo pode inserir ligado, mas a maior parte das coisas instaladas só funcionará após um reboot

 

Torrent

 

Agora que seu HD está plugado e funcionando você pode começar a instalar coisas mais interessantes, como o Transmission, um cliente de torrent que você administra pelo navegador.

Instale os pacotes necessários:

opkg update
opkg install transmission-cli
opkg install transmission-web

Crie a pasta para armazenar os arquivos e os temporários:

mkdir /mnt/storage/torrent /mnt/storage/torrent/complete /mnt/storage/torrent/incomplete /mnt/storage/torrent/config

E configure o transmission editando o arquivo config:

vi /etc/config/transmission

Altere as seguintes linhas:

option enabled 1
option config_dir '/mnt/storage/torrent/config'
option download_dir '/mnt/storage/torrent/complete'
option incomplete_dir '/mnt/storage/torrent/incomplete'
option incomplete_dir_enabled true
option ratio_limit 2.0000
option ratio_limit_enabled true
option rpc_authentication_required true
option rpc_password 'passwd'
option rpc_username 'user'

option rpc_whitelist_enabled false


Você provavelmente pretende acessar o programa do trabalho ou celular para adicionar novos arquivos, então abra a porta no arquivo de configuração do firewall:

vi /etc/config/firewall

Adiciona a seguinte regra:

#Allow Torrent Administration

config rule
option src               *
option proto            tcp
option dest_port     9091
option target           ACCEPT

habilite o transmission:

etc/init.d/transmission enable

e inicie ele:

/etc/init.d/transmission start

e reinicie o firewall para que as alterações tenham efeito:

/etc/init.d/firewall restart

Agora voce deve ser capaz de acessar ele pelo navegador digitando o ip do seu roteador e aporta 9091 (provavelmete http://192.168.1.1:9091):

Transmission

O Transmission é um ótimo programa de torrent e existem diversos programas para controla-lo remotamente, eu recomendo o .torrent to transmission para o Chrome e o Remote Transmission para o Android

.torrent to Transmission

Remote Transmission

O programa funciona muito bem, mas depois de brincar um pouco com vários arquivos baixando simultaneamente eu comecei a ter problemas de corrupção das partes do torrent:

 

Para evitar isso, vamos diminuir um pouco o uso da CPU, sempre que damos um "verify local data" ou algum comando assim no torrent vemos que o uso da CPU chega ao limite, com o comando top  vemos que o coitado está fazendo o possivel e a culpa é do torrent:

Você pode ver pelo segundo item na lista que o consumo para manter uma partição NTFS é a segunda coisa que mais consome processamento ai, então se não for usar o HD em outro maquina use EXT4 que você já ganha uma folga, mas só isso não resolve, infelizmente teremos que sacrificar um pouco o desempenho do torrent, é isso ou perder os arquivos, ou pior, comprometer o desempenho da rede.

No arquivo de configuração do transmission (/etc/config/transmission) eu alterei as linhas de:
option open_file_limit 32
option peer_limit_global 240
option peer_limit_per_torrent 60

Para:
option open_file_limit 16
option peer_limit_global 160
option peer_limit_per_torrent 40

Isso diminuiu muito o uso da CPU e continuo fazendo downloads com a mesma velocidade, aproximadamente 1 MB/s, depois disso meus arquivos pararam de corromper, se o seu modelo de roteador é diferente tente números compatíveis com o hardware dele, o processador do meu é de 400MHz, só para referencia.

Compartilhamento de Arquivos: SMB e FTP

 

Agora que você colocou o torrent para funcionar você precisa ter acesso ao HD para pegar os arquivos baixados sem precisar desconecta-lo do roteador, afinal seu computador e o roteador estão em rede, não faria muito sentido não transmitir esses dados pela rede.

*SMB é o protocolo de rede que o Windows usa, Samba é implementação open source desse protocolo que permite que maquinas windows e linux se falem.

Para o compartilhamento de rede funcionar direito a primeira coisa que você precisa fazer é abrir essas portas:

  • TCP 137 - NetBIOS Name Service
  • TCP 138 - NETBIOS Datagram Service
  • TCP 139 - NETBIOS Session Service
  • TCP 445 - Microsoft Directory Services

para isso adicione as seguintes regras no seu arquivo /etc/config/firewall

#SAMBA Network Share
config 'rule'
option 'src' 'lan'
option 'proto' 'udp'
option 'dest_port' '137-138'
option 'target' 'ACCEPT'
config 'rule'
option 'src' 'lan'
option 'proto' 'tcp'
option 'dest_port' '139'
option 'target' 'ACCEPT'
config 'rule'
option 'src' 'lan'
option 'proto' 'tcp'
option 'dest_port' '445'
option 'target' 'ACCEPT'

Agora instale os pacotes necessarios:

opkg update
opkg install samba3 luci-app-samba

e reinicie

reboot

Se o luci-app-samba instalou corretamente você pode configurar o compartilhamento pela interface gráfica:

Mas se preferir, como eu, o arquivo de configuração está em /etc/config/samba. Eu recomendo mudar o campo "Share home-directories" (ou "homes"  no arquivo de configuração) para 0, para evitar problemas, não gosto da ideia de usuários tendo acesso a pastas que não estão na partição de storage do HD.

No meu caso o arquivo de configuração ficou assim:

config 'samba'
option 'name' 'MainRouter'
option 'description' 'TL-WR1043ND'
option 'workgroup' 'Home'
option 'homes' '0'

config 'sambashare'
option 'read_only' 'no'
option 'create_mask' '0700'
option 'dir_mask' '0700'
option 'name' 'Storage'
option 'path' '/mnt/storage'
option 'guest_ok' 'yes'

o que visualmente resulta nisso:

depois de configurado inicie o processo e habilite seu inicio automático:

/etc/init.d/samba enable
/etc/init.d/samba start

Depois disso a pasta estará visível na rede como se o reteador fosse um outra maquina com compartilhamento habilitado:

 

Agora vamos configurar o FTP para você poder acessar os arquivos do trabalho, ou de qualquer outro lugar, diferente do SMB o FTP estará protegido por senha, então a ideia aqui é para apenas você utilizar, por isso eu utilizarei o usuário root mesmo, se você precisar criar outros usuários com permissões diferentes de uma olhada na documentação nesse link: http://wiki.openwrt.org/doc/uci/pure-ftpd

Primeiro instale o servidor FTP:

opkg update
opkg install pure-ftpd

(aparentemente existem outros servidores ftp, mas esse me pareceu o mais simples e rapido de configurar)

O arquivo de configuração, como você ja deve imaginar, está em /etc/config/pure-ftpd e a unica linha que voce precisa alterar é essa:

option enabled '1'

para que o enable fique '1', dependendo da empresa que fornece a sua conexão a porta 21 estará bloqueada (meu caso com a virtua), você pode mudar a porta na primeira linha do arquivo para um que esteja liberada.

depois disso basta habilita-lo e iniciar o processo:

/etc/init.d/pure-ftpd enable
/etc/init.d/pure-ftpd start

já está funcionando, o problema é que quando você se conectar ou ftp estará na pasta home do seu usuário, ou seja, a pasta /root, uma solução rápida e simples para isso é criar um link simbólico dentro da pasta para a pasta de storage:

ln -s /mnt/storage/ /root/storage

você até poderia entrar a pasta na mão no programa de ftp que preferir, mas esse link realmente ajuda bastante.

Acessando Remotamente

Agora que configuramos todos os serviços vamos abrir as portas do firewall e configurar portas alternativas para os programas que algumas empresas de internet bloqueiam:

Web Admin / Luci:

no arquivo /etc/config/uhttpd altere a linha

list listen_http 0.0.0.0:80

trocando o 80 pela porta que preferir.

FTP:

em /etc/config/pure-ftpd altere:

option port '21'

Para uma porta livre.

Torrent

em /etc/config/transmission aletere

option rpc_port 9091

para a porta que preferir.

SSH

O ssh pode ser configurado pela interface gráfica (System/Administration), que inclusive permite habilitar para LAN (rede local), WAN (internet) ou ambos:

Firewall

Nós já abrimos uma porta no firewall durante a configuração do torrent e samba, o processo é basicamente o mesmo, basta criar um regra como o modelo abaixo para cada porta que você quiser abrir no arquivo /etc/config/firewall:

 

config rule
option src               *
option proto            tcp
option dest_port        PORTA_QUE_DESEJA_ABRIR
option target           ACCEPT

DNS Dinâmico

Como seu IP frequentemente, o ideal é usar um gerenciador de dns dinâmico, como o No-IP ou o DynDNS para não precisar saber o ip, no lugar disso usar um endereço fácil de lembrar, a primeira coisa que você precisa é se cadastrar em um gerenciador suportado pelo OpenWRT, ou seja um desses:

Agora instale o pacote luci-app-ddns e reinicie o roteador:

opkg update
opkg install luci-app-ddns
reboot

Depois de instalado acesse a interface web e configure os dados fornecidos pelo sistema de dns dinâmico em que você cadastrou, essa parte deve ser auto explicativa:

Pronto! Tudo instalado e configurado, na próxima parte explicarei como instalar um impressora de rede e Scanner no roteador e alguns truques com scripts na pasta de torrents, até lá.

Fazendo o upgrade do Yamaha PSR-550 para USB

Yamah PSR-550 com USB

Yamaha PSR-550 modificado para USB

Alguns meses atrás eu estava passeando pelos anúncios de teclados no mercado livre e encontrei um dispositivo bem interessante, um emulador de disquetes, sim disquetes! pode parecer meio estranho mas eles ainda existem, principalmente para quem possui algum teclado antigo em casa, meu caso.

Emulador de Disquete

Emulador de Disquete

Eu já estava cansado de manter um drive de 3.5” em um i7 apenas para copiar arquivos entre o teclado e o computador ou usar um drive de disquete USB, embora um pouco ultrapassado o Yamaha PSR-550 continua sendo um ótimo arranjador e eu uso ele diariamente para gravar/anotar algumas coisas que escrevo. Sem o drive de disquete a única maneira de ver o que está gravado seria por uma conexão midi com o computador e isso envolve cabos, softwares e muito mais trabalho do que tirar o disco de um e colocar no outro, os teclados mais modernos usam um pendrive ou sd card, e ter essa opção no meu querido Yamaha me deixou realmente empolgado a não ser pelo preço do drive que gira em torno de 250 reais no mercado livre, por sorte o mesmo drive custa 9,90 dólares no ebay, pois é.

Outro problema muito irritante dessa tecnologia ultrapassada é o acumulo de partículas magnéticas na cabeça de leitura do drive, as vezes o teclado para de ler o disco e você tem que limpar a cabeça de leitura, aqueles disquetes de pano feitos pra isso ajudam mas não resolvem o problema e as vezes desmontar e limpar (ou trocar o drive) acaba sendo a única opção, é realmente muito comum, se você utiliza o tempo todo, retirar uma mídia perfeita da unidade e ao inserir novamente se deparar com a seguinte mensagem.

Depois de um bom tempo (obvio que veio da china), com o drive em mãos chegou a hora de instalar, eu ja tive que desmontar esse teclado então já sabia os truques mas é nítido que a yamaha não focou na facilidade de manutenção ao projetar o case, em primeiro lugar você vai precisar de uma chave comprida e fina, minha primeira opção sempre é a elétrica, mas nesse caso ela não alcança o parafuso como você vê na foto.

O pior é que para ter acesso ao drive você tem que desmontar tudo, pois ele fica em baixo da placa principal (Brilhante né?)

Depois de trocar o drive você vai precisar dedicar um pendrive para esse uso pois ele precisa ser formatado por um programa especial que cria diversas partições nele, as partições podem ser acessadas no teclado trocando o numero do mostrador por botões na parte da frente e simulam vários disquetes, para ler o pendrive no computador é preciso usar o programa para definir qual partição será reconhecida pelo computador, mas não tem muito segredo, a única observação que eu faço sobre usar um pendrive no teclado é que você deve comprar um pequeno, caso contrário ele vai te atrapalhar para tocar.

acompanhe abaixo as fotos do processo:

Apoio para livros do Halo e Gears of War

Sem grandes mistérios por trás das técnicas utilizadas e sem o uso de qualquer componente eletrônico esse post é apenas um relato de um passatempo interessante do meu ultimo fim de semana.

Estou em uma maratona que já está completando um mês com o objetivo de arrumar minuciosamente toda a minha tralha, eu já perdi a conta de quantos sacos de lixo eu tirei do armário, literalmente. No ultimo sábado cheguei em ponto em que o próximo passo seria a estante de livros técnicos, que utilizava dois apoios para livro bastante castigados.

Esses apoios que eu tinha na estante foram feitos pelo meu avô que trabalhava com algum tipo de análise de aeronaves (não sei bem o que ele fazia) e acabou conseguindo esses pedaços de duralumínio aeronáutico, a coisa mais difícil de pintar que eu já vi. Talvez tenha sido o calor, a tinta, provavelmente a falta do primer, mas foi muito difícil fazer a tinta fixar nessas chapas.

Eu pensei em cortar um pedaço do gabinete que joguei fora esses dias mas o metal era muito mole, mas farei isso a partir de agora com todos os gabinetes bons que eu jogar fora.

Já que eu ia pintar decidi brincar de stencil e colocar uns símbolos de alguns jogos que eu adoro, mesmo sendo a estante de livros e não a de jogos.

Seguem as imagens do processo, se alguém for fazer algo do tipo me passe o link das fotos depois!

Desenvolvendo Jogos em HTML 5 – Parte 2

No ultimo post sobre HTML 5 eu falei um pouco sobre como desenhar com canvas, nesse pretendo explicar um pouco sobre animação no canvas, assim como no outro usarei um pouco de matemática, não se preocupe com as formulas e cálculos, não são a parte importante do tutorial e provavelmente não se aplicam a outros exemplos, eu atropelei um pouco as explicações para não ficar um texto gigante.

Antes de aplicarmos as animações ao nosso jogo exemplo, faremos um outro exemplo de animação, simularemos o comportamento do experimento “Pendulum Wave” que é fácil de ser recriado e demonstra muito bem o mecanismo de animação que queremos usar, alem de eu considerar esse experimento particularmente impressionante, se nunca viu essa experiência impressione-se com o vídeo abaixo.

Trabalhando com desenvolvimento de sites eu raramente precisei usar orientação a objetos em JavaScript, normalmente os problemas se resolvem em funções de pouca linhas independentes, isso porque na maioria das vezes estamos trabalhando com elementos do HTML que já tem uma estrutura com uma serie de propriedades que nos apenas alteramos, mas nesse caso o nosso único elemento é o canvas, nos criamos tudo sobre ele e não estamos usando nenhuma biblioteca para ajudar o trabalho, então a complexidade é muito maior e a orientação a objectos, que normalmente é um tiro de bazuca em formigas, será essencial para facilitar nosso trabalho.

nesse exemplo também vou trabalhar em um arquivo separado para facilitar a edição, o HTML segue com apenas o básico, um canvas:

<html>
<head>
<script type="text/javascript" src="pendulos.js"></script>
</head>
<body onload="animacao()">
<canvas id="canvas" width="1000" height="1000">
</canvas>
</body>
</html>

e nosso arquivo de script conterá todo o código da animação, mais uma vez, sem nenhuma imagem.

Se você esta acostumado a fazer animações por código no Flash deve estar esperando algumas facilidades, no caso do Flash você pode colocar um objeto no palco e move-lo ou aplicar qualquer transformação a essa instância do objeto facilmente, no caso do html 5 precisamos trabalhar em um nível mais baixo como no OpenGL, redesenhando os objetos a cada quadro. A primeira impressão sobre essa técnica é de que ela é menos eficiente do que método usado pelo flash em termos de desempenho, mas isso não é verdade, embora o processo todo lembre o algoritmo do pintor os objetos estão apenas sendo posicionados e não renderizados, posteriormente caberá ao navegador aplicar suas próprias técnicas de render.

para a nossa simples simulação criaremos uma classe pendulo com um método Draw() que se encarregará de desenhar o pêndulo, no nosso caso manteremos um vetor com todos o elementos a serem desenhados e a cada quadro percorreremos esse vetor desenhando cada um dos elementos, além de pratico parece ser a abordagem mais popular, então se você procurar por códigos na internet eles não devem fugir muito disso.

Em primeiro lugar vamos definir a classe e seus atributos, estou evitando usar o mínimo de variáveis para facilitar o entendimento:

function Pendulo(x,y,l,r,teta)
{
this.x = x;
this.y = y;
this.l = l;
this.r = r;
this.teta = teta;
this.f = 0;
//consideranto a massa = 1 por unidade de medida volumetrica
this.m = (4/3)*Math.PI*this.r^3
this.p = this.m * gravidade;
this.a = 0;
}

Os parâmetros são X e Y do ponto onde o pêndulo está preso, L o comprimento da linha ideal, R o raio da esfera e Teta o ângulo inicial do pêndulo em relação ao vetor gravitacional.

para facilitar os cálculos que envolvem a posição da bola, que varia com o tempo, usaremos duas funções auxiliares:

this.getBX = function()
{
return x+Math.sin(this.teta)*l;
}

this.getBY = function()
{
return y+Math.cos(this.teta)*l
}

para desenhar a bola do pêndulo usaremos o recurso de arco do canvas:

context.arc(this.getBX(), this.getBY(), this.r, 0, Math.PI*2, true);

preenchido como expliquei na parte anterior do tutorial, a linha será desenhada por:

context.moveTo(this.getBX(), this.getBY());
context.lineTo(this.x,this.y);

portanto o método fica desse jeito:

this.draw = function()
{
var gradient = context.createRadialGradient(this.getBX(),this.getBY(),0,this.getBX(),this.getBY(),this.r);
gradient.addColorStop(0, '#CCC');
gradient.addColorStop(1, '#555');
context.beginPath();
context.fillStyle = gradient;
context.arc(this.getBX(), this.getBY(), this.r, 0, Math.PI*2, true);
context.moveTo(this.getBX(), this.getBY());
context.lineTo(this.x,this.y);
context.closePath();
context.stroke();
context.fill();
this.updateTeta();
}

o próximo passo é descrever matematicamente a movimentação do pêndulo, como a forca é definida por um vetor ortogonal a linha:

e sabemos que F = m.a podemos calcular a aceleração linear e facilmente encontrar a aceleração angular pelo arco seno da força, é isso que as linhas abaixo fazem:

this.updateTeta = function()
{
this.f = this.p*Math.sin(this.teta);
this.a = this.a + this.f/this.m;
this.teta = this.teta - Math.asin(this.a/this.l);
}

Pronto, já temos um pêndulo funcionando, basta agora acertar os valores de atualização da tela e a gravidade, como estamos usando Pixels no lugar de metros e milissegundos no lugar de segundos não espere um resultado realista, eu gostei de

var gravidade=0.398;
var drawInterval = 5;
var pend10Interval = 30;

pend10Interval define o tempo do décimo pêndulo, para criar o efeito que queremos precisamos alinhar os pêndulos em um looping com os períodos definidas por

periodo = (pend10Interval/((pend10Interval-9)+i));

Como nossa classe trabalha com o construtor: Pendulo(x,y,l,r,teta), precisamos na verdade determinar o comprimento (l). A wikipedia nos lembra que

O que nos permite deduzir que:

l = gravidade * Math.pow(((pend10Interval/((pend10Interval-9)+i))/Math.PI*2),2);

colocando tudo em um looping e escrevendo as ultimas funções auxiliares:

function animacao()
{
canvas = document.getElementById('canvas');
context = canvas.getContext("2d");
for(i=0; i<15;i++)
{
l = gravidade * Math.pow(((pend10Interval/((pend10Interval-9)+i))/Math.PI*2),2);
pendulos[i]=new Pendulo(500,0,l*2000,10,Math.PI/4);
}
setInterval(draw, drawInterval);
}

function draw()
{
clear();
for (i=0; i<pendulos.length; i++)
{
pendulos[i].draw();
}
}

function clear()
{
context.clearRect ( 0 , 0 , 1000 , 1000 );
}

O resultado final:

Resultado final

Veja funcionando aqui e baixe o código aqui.

Agora voltando ao jogo, eu tive que reescrever o código em uma classe, sem grandes alterações usando a ideia apresentada acima, eu havia citado que provavelmente teria que reescrever partes do código pois estou fazendo o tutorial conforme estudo Canvas, algo me diz que vou passar por isso novamente na hora de implementar a interação com o mouse.

A classe ficou com essa estrutura:

function Card()
{
this.draw = function() {}

this.drawCardBack = function() {}

this.cardBorderDraw = function() {}

this.cardBackDraw = function(x1,y1,x2,y2, r, nLinhasTextura) {}
}

a primeira coisa que você vai estranhar é que não existem mais os parametros no formato:

Card( x1,y1,x2,y2, r)

isso porque eu estou usando uma técnica para simular polimorfismo, ou seja, agora eu posso instanciar a classe com todos os parâmetros, ou com um só, que no caso é um vetor com todos, isso vai facilitar a implementação quando tiver-mos que usar um baralho completo:

var parametros = Card.arguments;
if(parametros.length == 1){
parametros = parametros[0];
}
this.x1 = parametros[0];
this.y1 = parametros[1];
this.x2 = parametros[2];
this.y2 = parametros[3];
this.r = parametros[4];

tambem não estou passando mais o parâmetro com o nome do canvas, isso porque agora usaremos o context como uma variável global, mais uma vez apenas para facilitar, tanto faz como você implementa.

Como nesse caso o código é mais complexo que no exemplo acima, dividi em dois arquivos, card.js com os códigos relativos a carta em si, e geral.js com o funcionamento da animação, mas na carta adicionaremos ainda duas funções:

this.moveTo = function(x,y) {}
function easing(t, b, c, d) {}

a função easing calcula a posição da carta levando em conta uma equação de suavização do movimento, onde b é o valor inicial, c o final, d a quantidade de passos e t o passo atual. O site http://www.gizma.com/easing/ tem uma grande biblioteca de funções de easing com um demonstrativo grafico do seu comportamento, vale a visita, no caso estamos usando easing in e out do tipo curva quadrática (olha ela ai denovo), a função fica assim:

function easing(t, b, c, d)
{
t /= d/2;
if (t < 1) return c/2*t*t + b;
t--;
return -c/2 * (t*(t-2) - 1) + b;
};

a função this.moveTo() atualiza a posição do objeto usando um loop do tipo setInterval() que chama a função especificada periodicamente, clearInterval para esse loop. Escrevi bem extenso e ainda acho que não ficou muito simples de entender:

this.moveTo = function(x,y)
{
var i = 0;
var xInicial = this.x1;
var yInicial = this.y1;
x = x-xInicial;
y = y-yInicial;
var w = this.x2 - this.x1;
var h = this.y2 - this.y1;
var _this = this;
var intervalId = setInterval(function()
{
_this.x1 = easing(i,xInicial,x,motionTime);
_this.x2 = _this.x1+w;
_this.y1 = easing(i,yInicial,y,motionTime);
_this.y2 = _this.y1+h;
i++;
if(i>=motionTime)
{
clearInterval(intervalId);
}
}
,drawInterval);
}

o principal truque ai é que easing retorna o que deve ser adicionado e não o valor final, por isso eu atualizo x e y nas linhas:

x = x-xInicial;
y = y-yInicial;

com isso escrito e os conceitos de animação explicados podemos testar com a função animacao(), escrevi uma animação bem simples que demonstra bem a ideia:

var cartas = new Array();
var drawInterval = 1;
var motionTime = 10;
var formatoCarta = [600,350,750,550, 10];
function animacao() {
canvas = document.getElementById('myGame');
context = canvas.getContext("2d");
var qtdcartas = 8;
for(i=0; i<8;i++)
{
cartas[i] = new Card(formatoCarta);
};
var intervalId = setInterval(draw, drawInterval);

setTimeout(function() {cartas[0].moveTo(10,10);},200);
setTimeout(function() {cartas[1].moveTo(180,10);},400);
setTimeout(function() {cartas[2].moveTo(350,10);},600);
setTimeout(function() {cartas[3].moveTo(530,10);},800);
setTimeout(function() {cartas[4].moveTo(10,25);},1000);
setTimeout(function() {cartas[5].moveTo(180,25);},1200);
setTimeout(function() {cartas[6].moveTo(350,25);},1400);
setTimeout(function() {cartas[7].moveTo(530,25);},1600);

};

o codigo para download esta disponivel nesse link e a animação pode ser vista diretamente clicando na imagem abaixo.

Resultado final

na próxima parte do tutorial, para agilizar os posts, falarei mais da mecânica do jogo do que de HTML, explicarei a questão das fileiras de cartas e alguns truques como uso de uma função callback nas animações.

Roland Ax-Synth Review

Eu deveria estar postando a continuação do tutorial de HTML, e espero fazer isso logo, mas nos últimos meses eu entrei em uma maratona de trabalhos e provas da faculdade, os acessos inclusive despencaram, e durante esses meses aconteceram certas coisas que são assunto para uma dúzia de posts, como por exemplo eu adquirir um Roland Ax-Synth, um sintetizador sensacional sobre o qual eu gostaria de falar um pouco.

Fiz um vídeo rápido sobre o Ax-Synth e pra quem não viu aqui está:

Eu gostei do vídeo, apesar de ter atropelado umas notas e não ter tido tempo de falar metade do que eu queria.

Para quem gosta de specs seguem as dele:

Keyboard 49 Keys (with velocity)
Sound Generator
Maximum Polyphony 128 voices
Tones 256 Tones + 8 Special Tones (including SuperNATURAL)
Controllers D-Beam, Ribbon Touch, Modulation Bar, Volume Knob Controller, Aftertouch Knob Controller, Portamento On/Off, Hold button On/Off, Bender Mode: Normal/Catch+Last
Connectors Output Jacks: 2 x 1/4′ inch phone type (L/MONO, R), Headphones (Stereo 1/4′ inch phone type), Foot Pedal, USB connector (USB MIDI), MIDI connector (IN/OUT), AC Adaptor
Others
Battery 8 x Ni-MH rechargeable Batteries
Display (3 x 7) segment LED
Accessories Owner’s Manual, Shoulder strap, AC Adaptor (PSB-1U)
Size and Weight ( excluding batteries )
Width
1,142 mm 45 inches
Depth
266 mm 10-1/2 inches
Height
87 mm 3-7/16 inches
Weight
3.9 kg 8 lbs. 10 oz.

Os timbres do equipamento realmente me agradaram, a quantidade de recursos de expressão permite tirar um som muito realista do Ax-Synth. uma das coisas que eu deixei de falar no vídeo foi sobre o Ax-09, também conhecido como Roland Lucina.

Roland Lucina Ax-09

Roland Lucina Ax-09

O Ax-09 é outro membro da família Ax, no vídeo cito o Ax-01 e Ax-07 que são apenas controladores midi. O Ax-09, assim como o Ax-Synth, possui um sintetizador embutido, na verdade é como se o Ax-09 fosse uma versão compacta do Ax-Synth, quase comprei o Lucina mas após muita pesquisa decidi que o teclado certo para mim era o Ax-Synth e vou explicar o porquê.

Controles de Expressão do Ax-Synth (Polegar)

Controles de Expressão do Ax-Synth (Polegar)

Enquanto o Ax-Synth se mostra pronto para o palco o Ax-09 parece ser perfeito para uso em estúdio e uso amador. A diferença mais impressionante está no preço, no Brasil o preço de qualquer instrumento é um absurdo, mas nos Estados Unidos onde temos o menor preço o Ax-09 custa apenas 400 dólares, já o Ax-Synth custa cerca de 1200 dólares.

Mas o que falta no Ax-09 para o preço ser tão menor? duas coisas muito importantes: uma oitava e parte dos controles de expressão.

Os dois hardwares são muito parecidos, um tem alguns timbres a mais que o outro mas nada muito significativo, quando digo que o Ax-09 seja melhor para se usar em estúdio não significa que não seja um bom equipamento para se usar ao vivo, afinal é um sintetizador profissional da Roland, mas a menos que os recursos que citarei a seguir não te façam falta, não espere correr pelos palcos sem nenhum cabo.

Controles de Expressão do Ax-Synth

Controles de Expressão do Ax-Synth

O Ax-Synth apresenta controles de polegar ausentes no Ax-09, são eles: Hold (sustain), Bender Mode, Portamento, Volume e After Touch. Alem do polegar os controles de oitava não estão tão acessíveis, embora ambos possam ser usados como teclados convencionais, o Ax-09 parece enfatizar isso mais do que o Ax-Synth pela posição dos controles, uma das coisas que achei muito estranho no Ax-09 é a posição dos botões de timbres abaixo das teclas ao invés de acima como no outro. o Ax-09 supera a falta desses controles pela possibilidade de usar um pedal de expressão, o que eu não consegui fazer no Ax-Synth pois a menos que ele tenha alguma opção muito escondida o pedal só funciona como sustain, isso limita um pouco a sua mobilidade em um palco.

Uma coisa que me deixou um pouco preocupado em relação ao Lucina é que o Ribbon (sensor do bend) esta cercado pelo plástico da carcaça, deixando pouco espaço para a mãos do tecladista, isso parece atrapalhar um pouco na hora de fazer aquele solo empolgante que quase estoura a corda.

Era de se esperar que algumas novidades surgissem no Ax-09, afinal foi lançado depois, uma coisa que realmente faz um pouco de falta para praticar as musicas é o recurso presente apenas no Lucina de tocar musicas a partir de um pendrive, por esse motivo ele usa uma porta USB padrão A, já o Ax-Synth usa uma porta USB padrão B o que anula a possibilidade de um dia suportar esse recurso por update de software.

Falando de software a serie conta com a possibilidade de editar os timbres por USB, recurso que eu ainda não tive tempo de testar, nem o software pois comprei o meu fora da caixa, mas a internet garante que da pra passar horas brincando de entortar ondas.

Software de edição de timbres do Ax-Synth

Software de edição de timbres do Ax-Synth

Suporte Roland ST-AX

Suporte Roland ST-AX

Uma coisa que observei ao usa-lo como modulo e controlador midi é que ele não conversou muito bem com meu teclado Yamaha, provavelmente por diferença no padrão (ou falta de) para a troca dos timbres. Quando uso dois teclados Yamaha conectados posso trocar o timbre tanto no modulo quanto no controlador, mas com Roland/Yamaha ao trocar no controlador o som desaparece, aparentemente ele tenta usar um timbre que não existe, pode ser o fato do Yamaha ter uns 8 anos, mas esta com mais cara dos padrões das marcas não se falarem 

Uma coisa que está sendo um verdadeiro desafio é encontrar os acessórios do Ax-Synth no Brasil, cheguei a encomendar o suporte St-Ax para ele em mais de uma loja, mas é extremamente difícil achar em estoque, o case fabricado pela SKB eu desisti de tentar achar em território nacional.

Case SKB para Roland Ax-Synth

Case SKB para Roland Ax-Synth

 

Ambos estão disponíveis em branco e preto, na minha opinião o Ax-Synth ficou mais legal branco e o Ax-09 ficou mais bonito preto.

Desenvolvendo Jogos em HTML5 – Parte 1

HTML5 games

Já tem algum tempo que o HTML5 esta ai, nenhum browser ainda suporta todas as suas funcionalidades, mas mesmo assim o desenvolvimento em HTML5 já esta começando a ameaçar o Flash Player.

A Apple decidiu comprar uma briga (na minha opinião não justificada) com a Adobe ao decidir que o IOS não teria suporte ao Flash e deu um empurrãozinho no HTML5, antes disso pouca gente realmente já estava antenado no assunto.

Na minha opinião, o Flash é superior em vários aspectos ao HTML5, começando pela orientação a objetos e a integração do AS3 com diversas outras linguagens e tecnologias, sejam da Adobe ou não. O AS3 vai muito alem de fazer sites e o HTML5 tem seus pontos fortes também, a verdade é que o HTML5 não vai substituir o Flash totalmente como a Apple gostaria e os dois vão continuar existindo por um bom tempo.

Para me manter atualizado decidi dar uma olhada no HTML5 e gostei bastante, sempre gostei de bibliotecas gráficas, e decidi escrever um tutorial misturando um pouco do meu gosto por desenvolvimento de jogos.

Este tutorial será dividido em vários posts curtos, conforme eu for fazendo o jogo vou postando as partes do código, minha intenção é manter os posts rápidos e frequentes, para facilitar a leitura de todos os posts estou criando a categoria Tutoriais / HTML 5.

O jogo criado será relativamente simples, um clone de Paciência Spider, onde tentarei usar o minimo de imagens possíveis e explorar o poder do canvas, novo recurso do HTML 5.
Como eu escreverei o jogo junto com os posts e conforme eu for estudando HTML5 talvez em algum momento eu decida mudar boa parte do que já foi feito.

A principal ferramenta que usaremos será a curva quadrática, para quem nunca ouviu falar, a curva quadrática é uma curva construída com base em 3 pontos: início, fim e um “ponto de fuga”, a curva é construída a partir do binômio de newton e a equação para resolve-la foi criada pelo matemático francês Pierre Bezier, que definiu um método para calculo de uma curva com n pontos, antes disso os algoritmos que calculavam a curva eram ridiculamente ineficientes.

Curva Quadratica de Bezier

O jeito mais fácil de explicar como essa equação se comporta é colar aqui alguns gifs da wikipedia ;)

Curva linear

Curva linear

Curva quadrática

Curva quadrática

Curva Cúbica

Curva Cúbica

Curva de ordem superior

Curva de ordem superior

 

Com isso claro podemos passar para HTML5, que nos fornece a ferramenta canvas, similar a varias linguagens, que é uma “área de desenho” e possui algumas funções prontas, como moveTo(x,y), lineTo(x, y), quadraticCurveTo(x1,y1,x2,y2) e outras que nos serão muito úteis.
Começamos com a criação do canvas:

<canvas id=”myGame” width=”200″ height=”350″>
<p>Seu navegador não suporta HTML5!</p>
</canvas>

Depois criamos a função que desenhará a borda da carta:

function cardBorderDraw(canvasName, x1,y1,x2,y2, r) { }

Essa função recebe o nome do canvas em que deve desenhar a carta, x e y do ponto superior esquerdo da carta, x e y do ponto inferior direito e r que é o raio da curva nas bordas.
Começamos a função com a atribuição do contexto do canvas à uma variável:

var drawingCanvas = document.getElementById(canvasName);
if(drawingCanvas && drawingCanvas.getContext) {
var context = drawingCanvas.getContext('2d');

Assim podemos usar a variável context para desenhar, usaremos as funções citadas acima com um pouco de matemática simples para calcular o formato da carta. Vale lembrar que em computação não usamos o plano cartesiano convencional, onde a origem fica no centro com y crescendo verticalmente, usamos a contagem de pixel do monitor que começa no canto superior esquerdo com y crescendo para baixo.

Plano cartesiano convencional

Plano cartesiano convencional

Plano cartesiano do computador

Plano cartesiano do computador

Dito isso vamos ao desenho da borda, começaremos pelo ponto (x1,y1) no canto superior esquerdo e deslocamos r em x pois a borda será desenhada posteriormente a partir do ponto final do contorno, traçamos uma linha até (x2,y1) descontando a borda r, que fica (x2-r, y1), então usamos a nossa querida curva quadrática para desenhar a curva entre o ponto de origem (x2-r, y1) com desvio para (x2,y1) e com termino em (x2,y1+r), preste atenção que pela natureza das coordenadas eu somei r em y1 e não subtrai como seria o normal. Com isso desenhamos a linha superior e a borda superior direita, para concluir a carta basta seguir o mesmo processo, e depois preencher, o código JS para isso é o seguinte:

context.beginPath(); // inicia o desenho da carta
context.moveTo(x1+r, y1);
context.lineTo(x2-r, y1);
context.quadraticCurveTo(x2, y1, x2, y1+r);
context.lineTo(x2, y2-r);
context.quadraticCurveTo(x2, y2, x2-r, y2);
context.lineTo(x1+r, y2);
context.quadraticCurveTo(x1, y2, x1, y2-r);
context.lineTo(x1, y1+r);
context.quadraticCurveTo(x1, y1, x1+r, y1);
context.closePath();
context.stroke(); // executa o desenho linhas
context.fillStyle = "#FFFFFF"; //preenche para o drop shadow
context.fill()

Como indicado pelo comentário, é preciso preencher a carta para o Drop Shadow funcionar, que pra quem não sabe é o efeito de sombra feito automaticamente por quase todo software e apid que manipula imagens. Para criar um efeito de Drop Shadow insira essas linhas antes do desenho da carta:

//Liga o Drop Shadow
context.shadowOffsetX = 10;
context.shadowOffsetY = 10;
context.shadowBlur = 10;
context.shadowColor = "gray";

Isso vai ativar o Drop Shadow e tudo que for desenhado após isso terá uma sombra, criado o nosso contorno em volta da carta desabilitamos a sombra com essas linhas depois do desenho da carta:

//Desliga o drop shadow
context.shadowOffsetX = 0;
context.shadowOffsetY = 0;
context.shadowBlur = 0;
context.shadowColor = "transparent";

Vamos agora criar uma função que desenha a carta completa, essa função será chamada ao abrir o arquivo para podermos ver o que está acontecendo:

window.onload = function() {
DrawCardBack('myGame',10,10,160,210)
};
function DrawCardBack(canvasName, x1,y1,x2,y2)
{
r = 10;
cardBorderDraw(canvasName,x1,y1,x2,y2,r);
}

Ao acessar o arquivo o resultado que você deve ver é esse:

Vamos ao centro do desenho, agora desenharemos aparte de trás da carta com a função:

function cardBackDraw(canvasName, x1,y1,x2,y2, r, nLinhasTextura) {
var drawingCanvas = document.getElementById(canvasName);
if(drawingCanvas &amp;&amp; drawingCanvas.getContext) {
var context = drawingCanvas.getContext('2d');

Primero definimos um gradiente radial para o preenchimento, ou seja um degrade circular centrado no ponto médio da carta:

//gradiente do preenchimento
cx = x1 + (x2 - x1) / 2;
cy = y1 + (y2 - y1) / 2;
var gradient = context.createRadialGradient(cx,cy,0,cx,cy,(y2 - y1));
gradient.addColorStop(0, '#FF0000');
gradient.addColorStop(1, '#660000');

Repare que em createRadialGradient eu usei o mesmo centro, as outras variáveis são os raios das cores. Em seguida desenhamos a borda como feito ateriormente, mas dessa vez utilizamos o gradiente como preenchimento:

// desenho da carta
context.beginPath();
context.moveTo(x1+r, y1);
context.lineTo(x2-r, y1);
context.quadraticCurveTo(x2, y1, x2, y1+r);
context.lineTo(x2, y2-r);
context.quadraticCurveTo(x2, y2, x2-r, y2);
context.lineTo(x1+r, y2);
context.quadraticCurveTo(x1, y2, x1, y2-r);
context.lineTo(x1, y1+r);
context.quadraticCurveTo(x1, y1, x1+r, y1);
//executa prenchimento
context.fillStyle = gradient;
context.fill();

E agora o que talvez seja a parte mais complicada da carta, vamos criar um desenho simples na carta usando a mesma ideia da curva quadrática, usando como referencia 3 dos quato cantos da carta e um espaçamento padrão, desenhamos varias linhas, que seriam as linhas de construção da curva:

//linhas textura
distLinhasx = ((x2 - x1) - r -r)/nLinhasTextura;
distLinhasy = ((y2 - y1) - r -r)/nLinhasTextura;
for(var i = 0; i
{
context.moveTo((x1+r+(distLinhasx*i)),y1);
context.lineTo(x2, y1+r+(distLinhasy*i));
}
for(var i = 0; i
{
context.moveTo((x1+r+(distLinhasx*i)),y2);
context.lineTo(x1, y1+r+(distLinhasy*i));
}
context.closePath();
context.stroke(); // executa linhas
}

Observe que eu fiz isso duas vezes e considerei a distancia r da borda para não desenhar fora da curva, divirta-se brincando com essa função para criar outros baralhos, agora altere a função DrawCardBack para ficar assim:

function DrawCardBack(canvasName, x1,y1,x2,y2)
{
r = 10;
linhas = 20
cardBorderDraw(canvasName,x1,y1,x2,y2,r);
cardBackDraw(canvasName,x1+r,y1+r,x2-r,y2-r,r,linhas);
}

E veja o resultado:

Por ultimo vamos mudar o fundo para verde, para ficar mais caracteristico de um jogo de cartas, e mudar a sombra para preto para combinar com o fundo, altere as seguintes linhas no seu arquivo:

&lt;canvas id="myGame" width="800" height="600" style="background:green;"&gt;

e

context.shadowColor = "black";

O resultado final é esse:

cardfinal

Resultado final

O arquivo pode ser baixado aqui, e pode ser visualizado aqui.
Acredito que já é muito coisa para um post só, espero que tenham gostado e tentarei ser breve em escrever o proximo.

Campus Party BR 2011, eu fui!!!

Campus Party 2011

WooooOOOOOOoooop

Já tem um mês que eu estou para postar isso, mas para variar um pouco meu tempo livre anda extremamente escasso.

 

Compareci à quarta edição do evento no Brasil e me diverti bastante. Foi amplamente noticiado que tivemos problemas elétricos e de segurança, sem falar nas 9 horas de fila, mas isso não atrapalhou o clima do evento.

Eu segurando um lendário TK3000

Eu segurando um lendário TK3000

John "Maddog" Hall

John "Maddog" Hall - Diretor Executivo da Linux International, dirige um carro com a placa UNIX

Tive a oportunidade de ver e interagir com algumas lendas da cultura nerd/geek, como Jon “Maddog” Hall que passou por mim de roupão o me cumprimentou como se fosse mais um campuseiro procurando o restaurante, Steve Wozniak, que ficou o dia todo autografando desde iPads até um TK3000 e um Mac II de 91. Também vi ao vivo Alexandre Ottoni(Jovem Nerd), Deive Pazos (Azaghal), Afonso 3d, @Interney, @MussumAlive, PC Siqueira e Diego, Gustavo Guanabara (Guanabara.info) e varias outras web pessoas.

 

Conheci muita gente bacana e reencontrei vários amigos que não via há alguns anos, participei de campeonatos e promoções, ganhei milhares de brindes e passei um calor inacreditável. Também fiquei empolgado para fazer um casemod, que será assunto de um post assim que a maquina estiver pronta.

Foi a primeira vez que participei do evento e com certeza não será a última, cometi vários erros de campuseiro de primeira viajem e tive sorte em estar precavido com vários itens sobressalentes, deixarei aqui as dicas para quem pretende participar da próxima edição.

Steve Wozniak

Steve Wozniak, co-fundador da Apple

A conexão de internet é realmente muito boa se comparada com a que você tem em casa, mas não é tudo isso que se fala, como existem aproximadamente 7000 pessoas tentando aproveitar ao máximo seus torrents a banda de 10Gbps fica reduzida, embora ainda seja alta o problema dois downloads é a taxa de envio dos sedders, então seu download não fica muito mais rápido a diferença real é que se você fizer milhares de downloads um não interferirá no outro. O truque do download é copiar dos outros campuseiros, como a rede é cabrada em gigabit você consegue taxas de transferências altíssimas, vários programas foram usados para isso, principalmente o DC ++.

 

Para mim o mais interessante foram as palestras, são elas que fazem todo o trabalho de ir até lá valer a pena. Para jogar video game eu fico em casa sem passar calor. As oficinas também foram muito boas, iam de blogs a robótica, de casemod a foguetes, com anônimos e conhecidos do meio.

O que levar?

No-break
No-breakSe você tiver um no-break leve-o, se não tiver talvez esteja na hora de comprar um. Comprei o meu No-break pouco antes do evento e ele já se pagou, no evento a energia elétrica faltou 3 vezes e nos últimos dias houveram varias “quedas” de energia em São Paulo. Sempre que seu computador fica bruscamente sem energia quem mais sofre é o disco rígido, que leva um golpe da agulha. Quando a energia é restabelecida normalmente volta um pouco acima do esperado, nesse momento seu computador corre o risco de queimar vários componentes. Se você acha que está bem protegido atrás do seu estabilizador, saiba que estabilizadores chegam (dependendo da marca) a perder 80% da eficiência “só″ porque sua tomada não tem fio terra e você usa um adaptador.
claro que se você pretende levar um notebook esse item não se aplica, mas se você pretende levar um desktop nesse evento, imagino que seja uma maquina poderosa, e esse tipo de computador não deveria jamais ficar sem um No-break. Eu por exemplo utilizo 6 discos de alta performance, se parte deles fossem danificados o prejuízo já seria muito maior que o custo de um no-break básico, isso apenas em unidades de disco. Vou deixar o link do no-break que uso(nada básico, 1,4Kva) e de onde comprei, esse aguenta meu home office por aproximadamente meia hora, salva e desliga tudo automaticamente. Se você não usa vários monitores, tv, instrumentos musicais e videogame enquanto trabalha, deve aguentar cerca de uma hora.
Vale lembrar que quando a luz acabou eu era o único que tinha eletricidade no desktop e continuei jogando videogame ate o próximo checkpoint.

Protetores auriculares
OOOoooooooop. É isso que você vai ouvir 24 horas na Campus Party, se quiser dormir recomendo protetores auriculares e mascara de dormir.

Kit de reparos
Ferramentas, cabos, peças e softwares. Alguma coisa sempre pode dar errado, com todos os problemas elétricos o pessoal teve que correr na santa ifigênia para comprar peças. Eu tive que reconectar um hd que se soltou e ajudei a galera vendendo pecas sobressalentes que eu não precisei.

Cabos de segurança
laptop-lockA segurança do evento deixou muito a desejar, era muito fácil andar pelos pontos de revista carregando equipamentos, tanto é que roubaram um notebook logo no primeiro dia. Eu mesmo cheguei a chamar os seguranças quando vi uma pessoa sem credenciais mexendo nos computadores que não eram dele.
Esses cabos são fáceis de achar e normalmente custam entre 15 e 20 reais, o problema real é prende-lo ao computador, a maioria dos notebooks, monitores, consoles etc. tem um local apropriado para prender cabos nesse padrão (Kesington), mas normalmente os desktops não tem, no meu eu precisei fazer uma adaptação, vista na foto ao lado.

Tomadas
Novo padrão de tomadasApenas uma tomada por pessoa é fornecida, ou seja, se você não levar um filtro de linha/estabilizador/no-break você não vai conseguir nem carregar o celular enquanto usa o PC, vale a pena lembrar que o padrão de tomadas do evento é o novo, então se você ainda não trocou os cabos do seu computador pelo menos compre um adaptador

Roteador Gigabit
Se você vai precisar de mais de um ponto de rede é uma boa ideia comprar um roteador Gigabit, caso ainda não tenha, pois a rede é cabeada em 10/100/1000 e se você quiser tirar o máximo dela um roteador normal vai atrapalhar, eu uso esse e é ótimo.

O que não levar

Muitos volumes
Eu sei que você quer levar seu desktop com todos os monitores, video game, notebook, estabilizador, router etc. mas pense bem se vai usar tudo isso, eu quase não tive tempo de jogar video game e fiquei rodando pelo evento só com o notebook, meu desktop ficou só fazendo download e apenas nesses itens contamos 6 volumes.
Eu cai na besteira de levar 15 volumes, na próxima edição eu vou de Travel Light.

Muita comida

Cup Noodles

Cup Noodles, promoções malucas da Campus Party

Se você comprar o pacote de alimentação pense bem na quantidade de comida que vai levar, dentro do evento estava vendendo cup noodles e a galera pediu pizza.
Isso se você comprar o pacote de comida, estou pensando em não comprar da próxima vez por um único motivo: Fila. Nessa edição haviam filas para todos os lados, a de comida era uma das maiores e a comida era servida em horários específicos, diferente do seu pacote de Doritos.

Roteadores wireless
Retire as antenas do seu roteador antes que elas sumam, o sinal não chega nas barracas e existe muita interferência das outras redes, não funciona muito bem.

Cabo de rede
Não há onde plugar os cabos, você é obrigado a usar o cabo que fica passado na mesa, e que muitas vezes não funciona.

Sem mais comentários eu fecho o post com a tonelada de fotos que tirei com a câmera do celular.

Problemas com o wordpress 3.1

Pela primeira vez em anos o wordpress me passou a perna, essa semana atualizei o wordpress e a pagina inicial do blog saiu do ar, só percebi porque estava monitorando as variações de acessos, que despencaram.
Colegas que usam o wordpress NÃO atualizem para o 3.1 ainda, nem para o 3.0.5 que em alguns casos está na verdade instalando o 3.1
A atualização cria um redirecionamento em loop e qualquer um que tentar acessar a pagina vera a seguinte mensagem:

The page isn’t redirecting properly

Firefox has detected that the server is redirecting the request for this address in a way that will never complete.
This problem can sometimes be caused by disabling or refusing to accept cookies.

Como apenas a primeira página é afetada muitos estão com esse problema e não sabem.
Ainda não há uma correção oficial e algumas pessoas estão modificando alguns arquivos do wordpress para resolver o problema, no momento a melhor solução é instalar e ativar o plugin WP htaccess Control e esperar pela correção oficial.
Peço desculpas pelo inconveniente e informo que estarei atualizando frequentemente o blog esse mês e monitorando falhas, assim que houver uma correção definitiva ou for seguro atualizar eu informo

EDIT:
A solução definitiva é desabilitar o “Canonical Redirects”, instalando o plugin “Permalink Fix & Disable Canonical Redirects Pack” que corrige o problema, corrige algumas coisa a mais mais que o htaccess como a paginação do blog.
Hoje o blog ficou algumas horas em White Screen Of Death, e foi resolvido graças a esse link: http://www.colinmcnulty.com/blog/2008/07/08/solution-to-wordpress-blank-screen-of-death/

Positivo Alfa: Tips, Tricks, Hacks & Bricks

Positivo Alfa com outro firmware

"In a World without Walls and Fences, who need Windows and Gates? - Think different. -Think Linux."

pdficonJa vou começar o post me desculpando pela qualidade das fotos, é madrugada de natal (24 para 25) e eu só tenho a câmera do celular em mãos…

Não comprei o meu Alfa nesse natal, comprei assim que lançou, na primeira semana de vendas exclusivas da livraria cultura que esgotou todo o estoque, por esse motivo meu dispositivo é da primeira geração, ou seja, sem Wifi. Estou enrolando para postar isso por motivos que você compreenderá abaixo.

O Alfa é a tentativa da Positivo de concorrer com o Kindle e o iPad, e sinceramente eu acredito que não fica muito atrás na disputa.

Positivo Alfa

Positivo Alfa, como é vendido no Brasil

O objetivo do aparelho não é ser um iPad como aconteceu com o leitor da Barnes & Noble, e sim ser um Kindle. Enquanto o Ipad é um brinquedo gigante com acelerometros, touch, cores, internet, câmera etc., o Kindle é um livro que recentemente ganhou internet para você poder comprar os livros direto nele.

A grande diferença nas duas categorias de gadgets, os “tablets” e os “ebooks” (discordo das duas denominações) é a tela. O iPad com sua tela colorida e vibrante tem iluminação própria que consome bateria e cansa a vista, já o Kindle com sua tela de ePaper, ou eInk, não cansa a vista e consome bateria apenas para mudar a imagem e não para mante-la, ou seja, um livro pode ficar na tela por tempo indeterminado se não mudarem a pagina.

Andei procurando um eBook de ePaper para comprar, vi o Nook, o COOL-ER, o Sony Reader, e outros, mas nenhum para venda imediata ou que valesse a pena em relação ao Kindle, até que no começo do semestre passado eu fui até a cultura onde compro meus livros para a faculdade, e me deparei com o Positivo Alfa em estoque, resultado: passei o cartão e fiquei brincando com ele a semana toda.

Amazon Kindle 3

Amazon Kindle 3, vendido pela amazon

A primeira impressão foi incrível, como geek eu discordei de vários reviews (de gente que não soube usar)  e achei o aparelho ótimo, em comparação ao Kindle ele é menor mas tem a tela do mesmo tamanho, isso porque o Kindle possui um teclado físico enquanto o Alfa é touch screen, a desculpa da Amazon para não colocar touch no Kindle é que ele refletiria mais do que o normal, eu digo que impressão em alguns papeis usados nos livros importados refletem  mais do que a tela do Alfa. Confesso que fiquei com um pé atrás pela reputação da marca, afinal computadores populares não fazem nem um pouco o meu perfil.

O processador não é dos mais rápidos, se você estiver vendo um pdf de imagem (pesado), a pagina demora um pouco para virar, mas nada absurdo, dentro do que se espera de um dispositivo cuja bateria aguenta 10000 paginas viradas.

ePaper vs LCD

ePaper vs LCD

O aparelho também suporta mais formatos e tem garantia e suporte nacional, o que deveria ser um ponto a favor, mas no caso da Positivo sinceramente foi um ponto contra. Na segunda semana de uso o aparelho apresentou problemas e eu precisei da garantia… que sufoco!

A Saga

Apareceram manchas na tela do dispositivo, como ePaper é algo que eu não tenho experiência de reparo nenhuma, nem ouso chutar a causa do problema, mas as manchas aparecem e sumiram até acontecer isso (juro que não sentei na tela, estava guardado):

Problema na tela

Ao entrar em contato com a positivo fui tranquilizado com a informação que a garantia cobriria o problema e era só ir até uma assistência, a atendente me passou então o endereço da central mais próxima, não tão próxima assim, e ou me dirigi até la. chegando no local fiquei surpreso pois parecia uma daquelas lojas da santa Ifigênia que recarregam cartuchos.

Mostrei o aparelho para o técnico que não sabia que existia esse tipo de gadget, esse me disse que apenas em outra assistência, bem mais longe, o problema seria resolvido, fui até la e encontrei o lugar fechado.

Com a agenda da semana super corrida pedi para minha mãe levar o aparelho na assistência, ela retornou com ele pois a assistência só arrumaria o aparelho com ordem direta da positivo. Entrei em contato com a positivo que me informou que qualquer assistência é OBRIGADA a resolver o problema e que o protocolo da ligação serviria como protocolo de pedido de reparo. Liguei para a assistência o conversei com eles para esclarecer a situação, enviei um email formalizando tudo e retornamos com o protocolo ao local que recebeu o produto sem problemas, passando o prazo de 15 dias úteis para o reparo, deixei avisado que já havia feito backup e eles podiam fazer o que fosse preciso com o Alfa.

5 dias sem noticias depois achei melhor entrar em contato para saber o andamento, então a criatura me diz que aguardavam meu contato para saber se era preciso fazer backup pois eles não estavam capacitados a reparar o aparelho e a positivo ira trocar ele por completo, nesse ponto o leitor já deve estar percebendo a minha raiva.

Alguns dias depois recebi um telefonema da assistência informando que o aparelho estava pronto para ser retirado, retirei e não tive mais problemas. Meu pai, que nunca havia utilizado o aparelho fez a retirada, ele teve que testar na hora pois ninguém no local sabia ligar o aparelho.

a gente tenta confiar nos produtos nacionais mas depois dessa tive que concordar com meus amigos:


O Firmware original

Quando vemos que o Positivo Alfa possui um plug P2 e um botão de volume logo deduzimos que é possível ouvir musica enquanto lemos ou ouvir um áudio livro como no Kindle, puro engano meu caro, a Positivo manteve seu foco em adicionar o dicionário Aurélio e esqueceu de implementar o software para o hardware incluso.

Outro ponto que chamou minha atenção logo de cara foi o botão para abrir um browser, presente no teclado virtual, que nunca funcionou.

Os marcadores e notas também sumiam aleatoriamente e sem explicação.

Fiquei na esperança de que um update viria e habilitaria pelo menos o áudio.

Eis o tão aguardado update, publicado no site oficial em forma de um .exe, o que me deixou com cara de interrogação (o Alfa roda Linux e tem um comando de update no menu),  aplicando o update NADA MUDA, apenas alguns bugs foram corrigidos.

A solução

4FFF N618

4FFF N618, como é vendido na china pela fabricante

Nessa semana após comprar um eBook técnico sensacional por apenas US$8,00 comecei a pesquisar sobre o Alfa e descobri que ele não é brasileiro coisa nenhuma, o hardware é produzido na china e a mesma empresa vende para várias positivos da vida, que põe o logo e fazem o firmware, no caso da Positivo é uma versão antiga com o dicionário Aurélio, em outros países a coisa está muito mais avançada, como é o caso da Espanha, que possui esse firmware maravilhoso, o melhor é que o firmware funciona nos aparelhos “nacionais”, sem medo de perder o Aurélio, afinal é minha língua nativa e  já tem alguns anos desde o ultimo livro que eu li em português, eu instalei o firmware e fiquei impressionado!

As vantagens são muitas, esse foi provavelmente o melhor update que eu vi desde que a Microsoft decidiu mexer na Dashboard do Xbox:

  • Suporte a novos formatos de eBook
  • Player de arquivos MP3
  • Suporte a arquivos de imagem
  • Browser para arquivos htm
  • Gerenciador de arquivos
  • Suporte a vários idiomas (exceto português)
  • Dicionários Inglês e Espanhol
  • Indicador de nível detalhado da bateria
  • Gerenciamento de arquivos por USB (Mass Storage)
  • Vários Bugs corrigidos

Recomendo para quem quiser atualizar, e ainda ensino:

  1. Desenferruje o portunhol e baixe o firmware aqui: http://www.nvsbl.es/foros/
  2. Descompacte o arquivo no cartão
  3. Clique em atualizar nas configurações avançadas
  4. Tome um café

se quiser reverter baixe o update no site da positivo

Observações:

Fiquei muito surpreso em saber que alem do fone o Positivo Alfa possui um autofalante interno, o som até que é alto para algo que não tem uma saída evidente.

O browser me confirmou uma teoria que eu tinha sobre a versão do aparelho com wifi: você paga a mais por algo que não da para usar… o coitado é muito lento para qualquer site se tornar navegável… isso é um livro não um PDA

Fique ouvindo musica e sua bateria vai embora rapidamente

Fica a galeria de fotos abaixo para você tirar suas conclusões

Existem vários outros firmwares, a mais legal mesmo é o chinês que da até para desenhar na tela, mas esta em chinês…
O Alfa Blog fez essa lista muito bacana com todas as versões que eles encontraram.

Depois que eu aprendi a atualizar e tinha os arquivos do firmware na mão fiquei tentado a customizar o firmware:

custom firmware

No final as coisas começaram a não funcionar e ou reverti pro software europeu, isso me deu saudade do tempo que eu ficava o dia todo no Hacking & Development instalando Linux nos dispositivos da Palm, mas isso fica para um outro post ;)

Como aproveitar a Xbox Live americana através do Linux

xbox live tron

Welcome to the Game Grid

xboxiconSe você continua jogando na live americana e sempre quis baixar um Game On Demmand, alugar um filme ou acessar qualquer outro conteúdo com restrição de ip não caia na tentação de migrar para a live brasileira, esse bloqueio pode ser contornado de várias maneiras, nesse post ensinarei a fazer através de uma VPN usando o Linux.

Existem inúmeros tutorias de como fazer isso utilizando o Windows, dei uma olhada em alguns e fiquei bem desapontado,  a maioria consiste em instalar uma maquina virtual préconfigurada rodando Linux, o que eh completamente desnecessário já que o próprio Windows pode fazer a VPN com um passo a passo muito mais simples e sem instalar nada, o mais engraçado foi encontrar algumas pessoas que fazem isso e ainda dizem que não da pra fazer pelo Linux, por isso decidi montar um tutorial extremamente simples para quem não tem medo de um terminal.

Gears of War 2

Gears of War 2, disponível para download na Xbox Live Americana (Games on Demand)

Se você não gosta de pinguins ou tem medo do shell (tela preta e letras brancas) de um google que você acha facinho um tutorial de VPN para windows, ou se houverem muitos pedidos um dia eu posto um.

Nesse tutorial estou usando o Kubuntu 10.10 para os screenshots, também ja fiz isso com o 10.04, o processo para qualquer outra distribuição Linux eh exatamente o mesmo, salvo a instalação dos pacotes caso a distro não seja baseada em Debian. Se você não eh um usuário Linux mas mesmo assim quer tentar seguir o tutorial baixe aqui o cd do Kubuntu, não eh preciso instalar no HD tudo pode ser feito do liveCD mas o sistema eh muito mais rápido rodando do HD e esteja avisado que estou considerando que você sabe usar o sistema, qualquer duvida lembre que o Google eh seu amigo e a sessão de comentários também

Antes de começar algumas considerações iniciais:

  • Eu não inventei esse processo, VPN é um conceito antigo e muito usado, eu apenas adaptei o guia para  Linux.
  • Isso funciona para qualquer console
  • Eu não me responsabilizo por banimento de contas ou algo parecido, muito gente joga por VPN mas aconselho a ler os termos de uso da Xbox Live e tirar suas próprias conclusões
  • Usando esses passos eu consegui baixar Games On Demand e alugar filmes na Live americana normalmente.

Você vai precisar de:

  • Um notebook ou computador com duas placas de rede (cabeadas ou wireless)
  • Um Xbox 360
  • Um cabo de rede (nao necessariamente crossover)
  • Internet Rapida
  • Linux (baixe o Kubuntu aqui)
  • Uma conta Live Gold Americana
  • Uma conta de uma VPN

A VPN pode ser paga ou free, desde que seja dos EUA, não recomendo que você usa aquela do seu trabalho que te da acesso aos servidores da empresa, é serio, muito provavelmente o IDS da rede vai ficar louco, quero ver você explicar pro teu chefe.

Eu recomendo os serviços da purevpn.com comprei um plano básico de IP compartilhado, me mandaram vários servers e todos com uma boa velocidade, fiquei realmente satisfeito.

Com tudo em mãos vamos ao trabalho:

Passo 1: No Linux instale um DNS Forwarder (dnsmasq) com o comando

sudo apt-get install dnsmasq

Passo 2: na versão 10.04 precisei baixar o suporte a VPN para o gerenciador de rede do KDE, verifique se você tem ele instalado

sudo apt-get install network-manager-pptp-kde

No caso do gnome o pacote é: network-manager-pptp-gnome

Passo 3: Configure a VPN:

No widget de rede vá em Gerenciar Conexões / VPN / Adicionar / PPTP

E configure com os dados da sua conta  vpn:

Não esqueça das configurações avançadas de criptografia, verifique com quem te forneceu a conta, eu testei algumas VPNs que não me passaram a configuração certa e eu perdi muito tempo testando para encontrar os parametros certos.

A PureVPN utiliza essas configurações.

Pronto você já esta com a VPN configurada no PC e já consegue se conectar a ela pela conexão que aparece no widget.

Passo 4: Conecte-se à internet (pelo wifi do seu computador) e à VPN, depois verifique que seu IP está mesmo nos EUA, qualquer www.omeuip.com resolve issoe

Passo 5: vire root

sudo su

Passo 6: habilite o compartilhamento de rede:

echo 1 > /proc/sys/net/ipv4/ip_forward

Passo 7: conecte o cabo de rede entre o Xbox 360 e a placa de rede do Computador
O cabo não precisa ser cross! O Xbox consegue corrigir se não for cross.

Passo 8: coloque um IP fixo na placa de rede do cabo:

ifconfig eth0 192.168.0.1 up

onde eth0 é o nome da sua placa de rede com o cabo e 192.168.0.1 foi um IP que eu escolhi, se houver duvida um ifconfig sem parâmetros exibe todas as placas.

Passo 9: Configure um IP fixo no Xbox, como por exemplo 192.168.0.2, sendo 255.255.255.0 a mascara de rede, 192.168.0.1 o gateway E DNS.

Passo 10: compartilhe a internet com essa placa:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

onde ppp0 é a placa de rede virtual da VPN, verifique com o ifconfig.

Passo 11: reinicie o roteador de DNS com o comando:

/etc/init.d/dnsmasq restart

Pronto… você está conectado por outro pais… confira isso pelo menu de configurações do Xbox em informações de sistema, deve mostrar o ip da VPN, se tiver problemas com a conexão tente repetir apenas os passos 10 e 11, sem desconectar.

O problema da VPN é a velocidade mas você não precisa fazer todo o download por ela.

No caso dos jogos existem dois momentos em que seu ip é verificado: na compra do jogo e na conclusão do download, no resto do tempo você pode estar conectado pela rede normal sem problemas, mas fique atento para a conclusão do download ou você terá um infeliz encontro com uma mensagem dizendo que seu arquivo está corrompido ou a conta não possui permissão de acesso.

The Walking Dead

The Walking Dead, temporada disponível na Live Americana por aproximadamente R$ 27,50

Se isso acontecer você precisara apagar completamente qualquer vestígio desse download do seu HD e começar novamente.

No caso dos videos a verificação ocorre apenas na compra, então se você comprar pelo computador nem precisa se preocupar com o Xbox, alguns videos exigem que você assista pelo menos 1 segundo pela vpn, o que eu faco é assistir um segundo por streaming e depois fazer o download completo pois a imagem normalmente é melhor quando o video está no HD ( a qualidade da imagem é limitada pela conexão).

Acho que isso também funciona para quem migrou e quer baixar novamente alguma coisa mas não tenho a menor ideia se realmente funciona. Fica ai o registro de como fazer, o que pode solucionar um outro problema qualquer na rede de alguém, então vale o post mesmo levando um tempão para ficar pronto.

Return top

Sobre

Um blog sobre computadores, PDAs, música, cinemas e demais viagens da cabeça de um programador que não dorme