Rafael Souza Desenvolvimento Web

Usando uma única instância do Vim

Hoje quando li o feed de comentários do blog do TaQ (re)apareceu uma dica que ele deu há um bom tempo, sobre usar uma única instância do Vim para editar arquivos, acho muito chato ter que abrir muitos editores.

Porém a dica que ele deu não funcionou para mim, apenas esta dos comentários, que ao invés de usar um alias, usa uma função.

# http://www.cyberciti.biz/faq/linux-unix-pass-argument-to-alias-command/

    function edit() {
        gvim --servername `gvim --serverlist | head -1` --remote-tab "$@";
    }

Eu mudei o nome para edit, acho mais fácil, mas fica a critério de cada um :)

Link do codigo original: http://pastebin.com/f7a69dcd7


bash history meme

Vi no blog do Luiz Rocha hoje um meme que rolou há um bom tempo atrás e resolvi fazer também.


[rafael ~]$ history 1000 | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
156 git
101 sudo
86 cd
75 yaourt
58 grep
52 gvim
48 exit
39 braid
36 ll
33 rake

Minha única surpresa foi o braid, considerando que conheci ele faz uma semana e que só utilizo ele em um projeto.


Usando Python e Google App Engine

No começo do mês recebi a liberação para usar o Google App Engine, foi o que faltava para eu dar uma brincada com Python.

Onde trabalho, toda a tarde rola de alguém ir no mercado comprar uns refrigerantes, mas todo dia era uma “briga” para ver quem ia. Para resolver isso, criamos página simples em PHP que sorteava quem naquele dia ia fazer as compras.

Depois que a minha conta foi liberada, fiquei um bom tempo pensando o que eu poderia fazer para usá-la, e então o Joel deu a idéia, fazer aquela “págininha” em Python e disponibilizar no Google App Engine.

http://eoescolhidofoi.appspot.com/

É simplesmente fantástica a facilidade de se criar uma aplicação e fazer o deploy dela no Google App Engine, o fato de não ter que se preocupar com banco de dados influencia bastante, basta definir modelos no próprio código, pensar apenas em objetos.

Depois dessa primeira eu já criei mais duas, uma está pronta, mas estou testando ainda, a outra está a caminho, mas será para a empresa que trabalho.


Github theme para o Vim

Depois de uma busca insana por um editor de texto acabei escolhendo o Vim, estou usando ele direto faz uma semana e estou me adaptando bem, apesar de algumas coisas me deixarem meio perdido (teclas de atalho principalmente).

Eu estava usando o Vim no console, com um tema com fundo escuro, e como estou usando o computador em um lugar muito claro, o reflexo que a minha tela emite fazia com que eu forçasse muito a visão para enxergar o código. Foi então que eu achei isto, um tema usando as cores do Github, instalei e ficou muito bom!

Um detalhe apenas é que a cor do fundo não é a mesma, nos comentários o Felipe Contreras dá a cor certa. Como não achei nenhum fork com a correção, eu mesmo o fiz.

Se você achar que alguma outra cor não está correta, você sabe, fork e pull request :)


nginx: Redirecionando de um domínio para outro

Semana passada eu resolvi mudar o domínio do blog, usar algo mais pessoal, e acabei escolhendo http://rafaelss.com, mais simples, mais curto, tem meu nome, enfim, muito melhor :)

Mas com isso veio a necessidade de redirecionar do domínio antigo, http://www.joeh.com.br, para o novo.

Isso é muito fácil.


    server {
        listen 80;
        server_name joeh.com.br  *.joeh.com.br;
        rewrite ^/(.*) http://rafaelss.com/$1 permanent;
    }

Com isso todos os links que apontam para o domínio velho são redirecionados para o novo, com o permanent ali as buscas se entendem, a indexação não é afetada, e tudo continua funcionando normalmente como era antes.


Rails Summit, eu fui!

Eu sei, eu sei, Rails Summit já foi faz tempo, mas só agora consegui postar alguma coisa aqui no blog.

O evento estava muito bom, muito motivador, palestras como a do Obie Fernandez, do Vinícius Teles e do Chad Fowler me fizeram mudar alguns aspectos na minha vida profissional (motivo pelo qual esse blog ficou um pouco abandonado), estou focando mais em desenvolver alguma coisa do que simplesmente assistir a tudo de braços cruzados. Gmail só o essencial e Google Reader e Twitter são raramente abertos em casa.

No momento networking do evento, reencontrei o Jony e o Tailor, que tinha conhecido no FISL, e conheci mais uma galera legal lá, citando alguns: Júlio Monteiro, Henry Hamon, Evandro Dutra, Rafael Lima, Henrique Bastos, Thiago Pradi, Davis Cabral e mais alguns outros que não me lembro o nome.

Enfim, espero que o ano que vem tenhamos outro evento neste mesmo nível (ou até melhor), que com certeza eu estarei lá.


Solução simples para um problema simples

É impressionante como alguns desenvolvedores muitas vezes não procuram uma forma mais simples de fazer certas tarefas do dia-a-dia, um exemplo clássico: Deixar apenas números em uma string, nesse caso, o número de uma agência bancária.

Primeiro a forma que vejo normalmente (em C#)


string agency = plan.Agency.Replace("-", "");
agency = agency.Replace(".", "");
agency = agency.Replace("/", "");
agency = agency.Replace("", "");

Forma simplificada (C# também)


Regex.Replace(plan.Agency, "[^0-9]+", "")

Não é muito mais simples? Basta procurar! ;)


Desabilitando validadores do .NET com Javascript

Mexendo com .NET hoje (eu sei, mas faz parte) tive que descobrir como desabilitar uns validadores com Javascript, e a resposta é bem simples:


var myVal = document.getElementById('<%= myValidator.ClientID %>');
ValidatorEnable(myVal, false);

Tirado daqui: http://geekswithblogs.net/jonasb/archive/2006/08/11/87708.aspx


Codificando e decodificando strings com HTML Entities

HTML Entities é uma gem para Ruby que serve para codificar e decodificar html entities.


gem install htmlentities

Para codificar uma string usamos


require 'rubygems'
require 'htmlentities'

he = HTMLEntities.new
encoded = he.encode("essa gem é uma mão na roda!", :named)
puts encoded # essa gem é uma mão na roda!

e para decodificar


require 'rubygems'
require 'htmlentities'

he = HTMLEntities.new
decoded = he.decode("essa gem é uma mão na roda!")
puts decoded # essa gem é uma mão na roda!

Aplicação usando Shoes

UPDATE: Atualizei algumas coisas no shoes-translator.

Criei ontem de noite um aplicação de teste para traduzir palavras/frases usando Ruby, Shoes e Google AJAX Language API, ela é bem simples, não tem nada que não foi feito por aí, mas futuramente vou colocar a opção de salvar outras palavras/frases em um banco de dados local, usando SQLite provavelmente, já que estou reforcando meus estudos em inglês, acho que isto vai me ajudar bastante ;)

Mas nem tudo são flores nessa vida de programador, passei um trabalhinho para poder rodar o Shoes com as gems que eu usei, ele não funciona com gems instaladas usando gem install, por que ele tem uma espécie de “interpretador” próprio ou coisa parecida. Depois de instalar o Shoes tive que colocar as gems (json, rest-client) e a lib rexml dentro da Shoes-landcomo vi uns chamando por ai.

Fiz um passo a passo de como rodar. Isso também serve para outras apps feitas usando Shoes que você queira rodar, não apenas para este projeto.

Copie as gems/libs – verifique antes se os diretórios são os mesmos

json – usei json_pure por que a outra é nativa, então não sei se funcionaria


sudo cp -R /usr/lib/ruby/gems/1.8/gems/json_pure-1.1.2/lib/json* /usr/local/lib/shoes/ruby/lib/

rest-client


sudo cp /usr/lib/ruby/gems/1.8/gems/rest-client-0.5.1/lib/* /usr/local/lib/shoes/ruby/lib/

rexml


sudo cp -R /usr/lib/ruby/1.8/rexml /usr/local/lib/shoes/ruby/lib/

Feito isso, clone o projeto


git clone git://github.com/rafaelss/shoes-translator.git

e quando terminar execute


cd shoes-translator
shoes translator.rb

← Before After →