domingo, 31 de maio de 2009

Enquete: O que devo fazer?

Bem pessoal, estou com um monte de ideias na cabeça para posts... Um quase certo é sobre o Tableau, uma ferramenta de visualização e analise de dados[bb] utilizada em B.I[bb]. Mas como este ditador que vos fala é bem democrático, vou propor uma enquete. Quais assuntos vocês desejam ver aqui no Anapropegua? Ajudem-me a sair de um dilema cruel... Se houver uma boa participação, eu publicarei os resultados muito em breve...

Participem desta enquete.

quinta-feira, 28 de maio de 2009

Twitter MalaFilter

Acho que não dá para negar, sou um entusiasta do Twitter. Eu até que estava determinado a não tão cedo escrever algo sobre a rede social do passarinho azul. No entanto, inspirado por um problema enfrentado pelo @IzzyNobre do Bom Dia, resolvi voltar a este tema.

Uma das características mais interessantes da maioria dos serviços de microblogging (detesto este termo) é o de serem por natureza redes sociais assíncronas, ou seja, não é necessário um consentimento mutuo para você acompanhar ou ser acompanhado por alguém. Isto tem lá suas vantagens e seus efeitos colaterais.

Uma dos aspectos negativos, a meu ver, do modelo assíncrono adotado pelo Twitter é a possibilidade de você ser acompanhado por desafetos, que monitoram seu perfil com o único intuito de provoca-lo ou coletar informações a seu respeito. Estes problemas podem ser resolvidos na maioria das vezes com um simples bloqueio, mas para aquelas pessoas que possuem um porrilhão de followers, e não tem saco para catar o que cada um deles fala a seu respeito, eis que proponho um solução.

Seus problemas acabaram!


Em linhas gerais o software analisa seus replies mais recentes e um numero X de twitts de cada um dos seus followers em busca de situações em que o nome de seu usuário encontra-se associado com palavras que devem ser informadas em um arquivo de configuração (blacklist). Dependendo do numero e da natureza das ocorrências, o sistema atribui um peso.

Na verdade é uma solução bem crua, basicamente um Mock-Up, não espere nada finalizado ou user friendly, apesar de que qualquer pessoa com capacidade cognitiva[bb] suficiente para editar um arquivo texto pode utiliza-lo. Creio que vale pelo conceito, quem sabe esta ideia depois de ser bastante refinada, transforme-se em algo realmente suitable for dummies...

O negocio da coisa do bicho no negocio


Caso o nobre leitor não se anime em meter a mão na coisa (no código Java[bb], claro), pode simplesmente alterar as configuração e fazer bom proveito. São dois os arquivos de configuração que devem ser editados:

blacklist.cfg

Neste arquivo, você deve incluir todas as palavras que devem ser consideradas ofensivas quando associadas a seu nome.

main.cfg

Arquivo de configuração principal, nele você deve informar o seu username, seu password da sua conta no Twitter e o numero de updates que devem ser analisados de seus followers.

Executando

No diretório "bin" do projeto, existe um arquivo de lote chamado exec.cmd, se os dados digitados nos arquivos de configuração estiverem corretos, basta executa-lo para que após um tempo de processamento que pode variar, dependendo do numero de pessoas que acompanham seu perfil, para que retorne um relatório semelhante ao que se segue.

Peso Usuario
---- --------
20 Fulano
30 Sicrano
40 Beltrano

Com isto, você terá um pista de que o Beltrano, com certa frequência, posta twits onde o nome de seu usuário figura ao lado de palavras incluídas previamente na sua blacklist.

Lembrando que estes pesos não tem a pretensão de dar uma certeza metafísica (thanks to Zack Snyder) de que existe um sujeitinho te esculhambando no Twitter, mas números altos podem ser um indicativo, afinal, onde há fumaça, há fogo.

Download do código fonte

sexta-feira, 22 de maio de 2009

Anapropegua Facts

Como hoje é sexta-feira, resolvi escrever algo mais lite. Coloquei nestes fatos um pouco da minha experiencia e das minhas frustrações. Espero que gostem e estejam livres para estende-los.

  1. Anapropegua que se preze, modela, implementa, testa, documenta, treina e ainda faz os cadastros básicos!
  2. Anapropegua de verdade não trabalha menos de 12 horas por dia!
  3. Anapropegua é mais filho de uma égua do que analista e programador[bb].
  4. Anapropegua invariavelmente acaba realizando o trabalho de seus usuários, pois, é mais comodo para ele do que explicar como aquela rotina funciona pela vigésima vez!
  5. Anapropegua acaba entendendo melhor do trabalho de seus usuários do que eles próprios.
  6. Anapropeguas e usuários não falam a mesma língua[bb]!
  7. Anapropeguas detestam testar seus sistemas.
  8. Anapropeguas odeiam documentar seus sistemas.
  9. Anapropeguas abominam com todas as suas forças tirar duvidas com os usuários!
  10. Anapropegua é resignado, ele não se ilude, seu trabalho jamais será reconhecido!
  11. Anapropegua de fato, só entrega um projeto no prazo quando encontra-se sobre extrema pressão.
  12. Anapropegua de raiz, não sabe a qual especie de organismo unicelular seus usuários pertencem.
  13. Anapropegua iniciou nesta carreira porque gostava de programar. Mas efetivamente é o que ele menos faz.
  14. Anapropegua macho, conhece no minimo cinco linguagens de programação, domina duas e trabalha com dez!
  15. Anapropegua espartano desenha diagramas UML com punhal nas costas de seus usuários e implementa sem utilizar IDE!
  16. Anapropegua que tem sangue no olho, não documenta, não testa e só entrega o sistema no dia do go live!
  17. Anapropegua Cap Nascimento, fala para seus usuários: "Sai deste sistema, você não é caveira! É um muleque! A culpa deste bug é toda sua!"
  18. Anapropegua Jack Bauer cria um sistema para reprogramar um satélite, matar 300 terroristas e desarmar uma bomba nuclear!
  19. Anapropegua Rocharch fala a seus usuários: "Não sou eu que estou preso aqui com vocês. São vocês que estão presos aqui comigo."
  20. Anapropeguas do sexo feminino são como o Acre. Não existem!

sexta-feira, 15 de maio de 2009

Cylonizando o Twitter

Depois de um longo tempo de silencio, voltei do limbo para onde havia me recolhido voluntariamente. Para comemorar este retorno, voltarei a tratar do querido, e agora muito notado, Twitter.

Este projeto será mais uma contribuição minha para a dominação do Twitter por robôs! Construiremos um maldito Cylon ("bot") cujo o objetivo é publicar via twits (os conhecidos updates) aqueles feeds que você opta por compartilhar no Google Reader.

O que iremos precisar
Também são necessário os seguintes componentes:Não entrarei na maioria dos detalhes da implementação da classe em si, o código está razoavelmente bem documentado. A dica que darei aqui é de como obter a API Key do bit.ly e a URL dos seus itens compartilhados no Google Reader.

Compartilhando suas noticias favoritas no Google Reader

Este passo é bem simples, basta clicar no ícone "Compartilhar"(), localizado no rodapé de cada noticia, e pronto! Sem maiores mistérios...

Obtendo o endereço dos seus itens compartilhados do Google Reader

Siga os passos:
  1. Clique no link
  2. Clique na aba "Pastas e Tags"
  3. Clique no link "Visualizar página pública"
  4. Copie o link "Feed Atom"






Conseguindo a API Key do bit.ly

Utilizei o bit.ly como URL Shortener (lit. Encolhedor de URLs). Para quem não sabe, o Twitter possui um limitação de 140 caracteres por post, dai a necessidade de utilizar este tipo de serviço.
  • Inscreva-se e faça login no site do serviço
  • Clique no link "Account"

  • Copie o código iniciado por "R_", esta é sua "API Key"


Falando um pouco do código

Um trecho que merece algumas explicações é o seguinte:
String sAux =(new String(responseBody).split(",")[4].trim()).substring(12);
Este tratamento é motivado pela retorno do método getResponseBody()
{
"errorCode" : "0",
"errorMessage" : "",
"results" : {
"http://www.pheedcontent.com/click.phdo?i=1734b4d71357cabfb634d3be51b02aa8": {
"hash" : "BidIZ",
"shortKeywordUrl" : "",
"shortUrl" : "http://bit.ly/GDaGD",
"userHash" : "GDaGD"
}
},
"statusCode": "OK"
}
O método split recebe uma string separada por um determinado caractere (no caso acima, o caractere ",") e retorna um array. Neste situação, nosso interesse é pela posição 4, onde está armazenada a sequência:
"shortUrl" : "http://bit.ly/GDaGD",
O resto do código, creio eu, é mais inteligível e não precisa de maiores explicações.

William Adama não é de nada!!

Download do código fonte aqui.