Pidgin e o protocolo do MSN

Cheguei no trabalho e fui me conectar ao MSN usando o Pidgin... ops, "Unable to retrieve MSN address book". Hmmm... não era o que eu esperava. =)

Tentei reconectar e recebi o mesmo erro. Resolvi ler uns RSS para ver se encontrava algo sobre o problema... e encontrei logo de cara a solução.

Se você usa Ubuntu basta rodar um: sudo aptitude install msn-pecan. Ou baixe direto da página do projeto.

Daí é só mudar o protocolo da sua conta de  MSN para WLM. :D

Via F2.

comentários (3)

Tooltips no Google Maps

Dizem por aí que a necessidade é a mãe da invenção e da criação e... eu, de fato, concordo com isso. :D

Há duas semanas atrás eu fazia uma aplicação que exibia vários marcadores sobre um mapa e percebi que seria útil exibir uma espécie de tooltip sobre esses marcadores. A opção de usar o atributo title estava disponível sim, mas eu queria mais, queria poder personalizar essas tooltips!

Aproveitando-me do fato que a API de Mapas do Google já possui uma série de métodos para tratar eventos do mouse, resolvi criar algo que permitisse exibir tooltips personalizadas sobre os marcadores no mapa. O resultado? MapTips.

O resultado ficou bem legal e simples. Até criei uma página que explica o funcionamento e tem exemplos de utilização.

Como talvez você já tenha notado, disponibilizei o código fonte no Google Code. Agora preciso criar mais algumas páginas de wiki e bug tracking. :)

comentários

Busca fácil on Rails

Durante as férias escolares que se aproximam, planejo dar continuidade ao projeto que iniciei no Yahoo! Hack Day desse ano. A idéia é fazer um calendário + mapa de eventos. :)

Aproveitei um tempo de folga essa semana e resolvi implementar uma busca nos eventos cadastrados. Fiz um rascunho que como seria a busca e pensei: "ok, agora não quero reinventar a roda, será que existe algum plugin/gem que facilite a criação de páginas de busca?"

Após algumas buscas e testes encontrei um projeto chamado Searchlogic. A primeira impressão foi muito boa: de cara já vejo o projeto com uma ampla documentação disponível. Bastaram algumas linhas de código para conseguir o que eu queria! :)

Com base nesse resultado positivo, resolvi compartilhar aqui a minha experiência fazendo uma pequena explicação sobre como integrar o Searchlogic ao seu site.

Passo 1: Instalação do Searchlogic: Você pode fazer a instalação usando o RubyGems ou instalando com um plugin dentro do seu projeto.

Instalação como gem:

sudo gem install searchlogic

# e depois adicione ao config/environment.rb
config.gem "searchlogic" 

Instalação como plugin:

script/plugin install git://github.com/binarylogic/searchlogic.git

Passo 2: Faça a busca! É isso mesmo, já está "tudo no jeito" para você fazer a sua busca. Uma busca simples seria:

@search = Model.new_search( params[:q] )
@items, @items_count = @search.all, @search.count

O que esse código faz é buscar registros a partir do seu modelo (Model no exemplo) e colocar o resultado em duas variáveis: uma com a coleção de registros e outra com a quantidade retornada. Mais fácil impossível.

Passo 3: Personalizando sua busca: se você quiser, e você provavelmente quer, você pode especificar quais campos devem ser pesquisados ou quais as condições devem ser atendidas. Tudo isso é muito simples de ser feito e pode ser definido de duas formas: você pode usar um hash com as opções e condições (similar ao que fazemos com o tradicional find) ou uma abordagem mais orientada a objetos. Exemplos simulando uma busca de carros:

Passando um hash:

Car.all(
  :conditions => {
    :name_contains => 'ford', # name like '%ford%'
  },
  :per_page => 10
  :page => params[:page],
   :o rder_by => 'year',
   :o rder_as => 'DESC',
)

Ou como um objeto:

search = Car.new_search
search.conditions.name_contains = 'ford'
search.per_page = 10
search.page = params[:page]
search.order_by = 'year'
search.order_as = 'DESC'
search.all # execute

Simples não? E isso é só o começo, na documentação do projeto há muitos outros exemplos e possibilidades!

comentários (1)

Qual o botão do mouse gerou esse clique?

São vários os motivos em que pode ser interessante descobrir qual o botão do mouse seu visitante usou para clicar em um elemento. E como muitos já sabem, eventos sofrem bastante com a falta de padronização entre os navegadores. Mas com as popularização das bibliotecas de Javascript, por exemplo jQuery, essa é uma tarefa relativamente fácil.

Seguindo as dicas encontradas no site do PPK, QuirksMode, podemos ver como identificar qual o botão usado pelo visitante. Traduzindo isso em código teríamos algo assim: (com jQuery disponível na página):

var left_button = 0;
var middle_button = 1;
var right_button = 2;
if( $.browser.msie )
{
  left_button = 1;
  middle_button = 4;
  right_button = 2;
}
$( "#container" ).mouseup(
  function( e )
  {
    var botao = "";
    if( e.button == middle_button )
    {
      botao = "meio (rodinha)";
    }
    else if( e.button == right_button )
    {
      botao = "direito (contexto)";
    }
    else
    {
      botao = "esquerdo (principal)";
    }
    alert ( "botão: " + botao );
  }
);

Um fator importante é que se você usar o evento click, a informação sobre o botão usado poderá não estar disponível e o código provavelmente não irá funcionar. Por isso é importante usar eventos como mousedown, mouseup. Aproveitei e fiz uma contribuição com a documentação da jQuery sobre eventos adicionando uma nota sobre o fato acima. =)

Se quiser ver o exemplo acima em uma página funcional, acesse este exemplo.

Nota: Ainda não tive tempo de testar o código em diversos navegadores, farei isso assim que possível. Testei no Firefox 3, no Firefox 2, IEs 7 e 6, e Safari 3, todos funcionam. Só no Opera 9.5 que o único botão "capturável" parece ser o botão esquerdo.

comentários (1)