2. 08.
A internet proporcionou uma ampliação do potencial de difusão de conhecimento sem precedentes na história. Nos dias de hoje, é virtualmente impossível que até mesmo o aspecto mais obscuro de qualquer assunto não possua referências na rede. Ainda assim, muitas vezes existe a necessidade de buscar ajuda e tirar dúvidas em comunidades, fóruns, listas de discussão ou salas de chat.
No entanto, especialmente em fóruns técnicos, é necessário adotar a postura adequada para que as dúvidas tenham chance de ser resolvidas por mais pessoas. É justamente por se tratar de pessoas - e não de máquinas - que a abordagem deve facilitar a vida de quem vai responder. Para isso, a pergunta precisa ter algumas características fundamentais:
- Detalhes do que se está tentando fazer ou do problema a ser resolvido. A menos que a pessoa esteja fisicamente a seu lado, não há como adivinhar detalhes como configuração de hardware, sistema operacional utilizado, versão dos aplicativos ou linguagens, entre outros aspectos que podem fazer toda a diferença entre uma resposta precisa, uma resposta vaga ou resposta alguma. Além disso, evite esconder seu código. Acredite: existem mais chances de você ganhar duas vezes na mega sena acumulada do que as de seu código ser inédito.
- Descrição pormenorizada do que está dando errado. Muitas vezes o próprio erro fornece indicações de como resolvê-lo. É comum vermos frases como “tentei executar o trecho de código X, mas deu erro”. Tudo bem, mas que tipo de erro? O que aconteceu? Havia alguma mensagem?
- Indicação do resultado esperado. Não é raro tentarmos resolver um problema pelo caminho mais difícil simplesmente por não saber que havia uma alternativa mais fácil. Se você concentra sua pergunta em “como estou fazendo” ao invés de “o que eu preciso obter”, pode estar perdendo uma chance de economizar tempo e de aprender algo novo.
- Identificação de quem está perguntando. Essa talvez não seja tão fundamental assim, mas considero importante do ponto de vista de humanizar a interação, principalmente quando se está em um meio profissional. Afinal, na internet ninguém sabe que você é um cachorro.
Há alguns anos, Eric Raymond escreveu um artigo chamado How To Ask Questions The Smart Way. Nele, o ilustre programador detalha esses e outros pontos importantes na hora de perguntar. O artigo também está disponível em português brasileiro. Outra boa fonte de dicas é o wiki da comunidade Python Brasil, na página AntesDePerguntar. Apesar de dar ênfase a perguntas para a Python Brasil, os princípios apresentados se aplicam a qualquer comunidade técnica.
Em suma, é primordial ter respeito pelo tempo alheio. Embora a maioria das pessoas tenha boa vontade para ajudar, elas o fazem voluntariamente e, assim como você, também têm seus compromissos. Além disso, bom senso, bons modos e humildade para acatar as orientações também contam pontos na hora de obter boas respostas. Afinal, só pergunta quem ainda não sabe e só se aprende perguntando.
Leia também
6. 05.
Google apresentou ontem alguns novos incrementos de funcionalidade ao seu Google Reader . Particularmente, um dos novos recursos vinha fazendo muita falta: a possibilidade de anexar uma nota pessoal a um item compartilhado. Além disso, agora também é possível:
- Compartilhar um item sem a necessidade de assinar o feed previamente, através do bookmarklet Note in Reader , encontrado na seção "Your stuff > Notes"
- Postar uma nota sem anexá-la a algum item
- Personalizar a página de itens compartilhados
Mais detalhes sobre as mudanças podem ser conferidos em Share anything. Anytime. Anywhere.
Leia também
15. 04.
O uso de teclas de atalho da IDE ou editor favorito é um dos maiores fatores de aumento de produtividade no desenvolvimento. A IDE Eclipse proporciona uma infinidade de atalhos de teclado capazes de economizar muito tempo (e movimentos) do desenvolvedor. A maioria dos atalhos apresentados aqui são específicos da perspectiva Java do Eclipse e tentam abranger as operações mais efetuadas durante a manutenção de código, uma vez que é comum gastarmos mais tempo nessa fase do que na criação da primeira versão de cada componente de código.
Busca
- Ctrl+Shift+R
Busca e abre rapidamente qualquer item do projeto, seja ele uma classe, arquivo XML, arquivo de properties, bytecode etc. - Ctrl+T
Mostra a hierarquia da classe atual, permitindo abrir rapidamente qualquer classe da hierarquia. - Ctrl+H
Abre a janela de pesquisa nos arquivos do workspace. Nela é possível procurar tanto por trechos textuais nos arquivos, quanto por referências a elementos da linguagem como tipos, métodos, pacotes, atributos etc. - Ctrl+J
Busca incremental no arquivo aberto. O cursor é posicionado no trecho de código correspondente à medida em que o programador digita o termo de pesquisa. - Ctrl+Alt+G
Pesquisa no workspace por todas as ocorrências do elemento sobre o qual o cursor está posicionado.
Navegação no código
- Alt+Left
Volta para a última posição editada. - Alt+Right
Avança para a próxima posição editada. - Ctrl+O
Mostra a estrutura (outline) do arquivo que está sendo editado e permite navegar até declaração selecionada. - Ctrl+G
Localiza a declaração da classe, interface, atributo ou método selecionado. - Crtl+Shift+G
Localiza todas as referências à classe, interface, atributo ou método selecionado existentes no workspace. - Ctrl+3
Navegação rápida. Navega entre todos os itens abertos em todas as views e perspectivas abertas no momento. Novo no Eclipse 3.3 .
Organização do código
- Crtl+Shift+F
Formata automaticamente o trecho de código selecionado de acordo com as configurações definidas em Window > Preferences > Java > Code Style > Formatter - Crtl+Shift+O
Organiza os imports do arquivo aberto, removendo as declarações desnecessárias.
Depuração
- Ctrl+1
Invoca a funcionalidade de reparo rápido (quick fix) quando o compilador acusa algum erro. O reparo rápido consiste em um pop-up com uma lista de sugestões de modificação que são aplicadas automaticamente ao selecionar. - Ctrl+Shift+I
Inspeciona o valor das variáveis enquanto ocorre a depuração. Disponível apenas na perspectiva Debug.
Refactoring
- Alt+Shift+R
Renomeia o elemento. - Alt+Shift+L
Extrair para variável local. Atribui a expressão selecionada a uma váriavel. - Alt+Shift+M
Extrair método. Cria um novo método contendo o trecho de código selecionado.
Configuração
- Ctrl+Shift+L
Mostra a lista de atalhos de teclado. - Ctrl+Shift+L duas vezes
Abre a tela de personalização de atalhos de teclado.
Leia também
6. 09.

Qualquer pessoa que já acompanhou um feed RSS pelo menos uma vez na vida sabe que é muito fácil perder o controle do tempo gasto na triagem e leitura de tanta informação. Para que os feeds não se tornem um transtorno ao invés de algo útil, é sempre bom usar de alguma disciplina para organizá-los. Nesse caso, o leitor de RSS ocupa um papel importante.
Existem muitos agregadores de RSS disponíveis, tanto para desktop quanto para web. Por motivos vários, o meu predileto é o Google Reader . Algumas práticas que tento manter para usar o Reader de forma efetiva são:
1. Não deixar que nenhum feed fique fora de uma pasta
Além de aumentar a sensação de ordem na tela do Reader, categorizar todo e qualquer feed é uma ferramenta para selecionar o que ler primeiro em um determinado momento do dia. Está cansado e prefere ler coisas leves? Procure a pasta "humor". O dia está começando (ou terminando) e você quer saber o que se passa no mundo lá fora? Vá até a pasta "notícias".
2. Colocar novos feeds em "quarentena"
Boa medida para quem gosta de assinar feeds impulsivamente, mesmo sem saber se o conteúdo vai continuar mantendo o nível do post que provocou o impulso inicial. Crie uma pasta chamada "quarentena" (ou com o nome que achar mais adequado) e jogue lá cada novo feed. Como você ainda não tem certeza se realmente vale pena acompanhar o feed, a prioridade de leitura dos itens dessa pasta pode ser controlada.
3. Revisar periodicamente quais feeds realmente valem a pena
Alguns sinais podem indicar que talvez não seja bom negócio continuar assinando um determinado feed:
- O conteúdo é atualizado com tanta freqüencia que fica difícil acompanhar. Quando além disso os textos forem costumeiramente longos, é hora de eliminar. Do contrário, ou você perderá metade do seu dia lendo na internet, ou os itens não lidos vão se acumular e você nunca vai lê-los de qualquer jeito.
- A freqüência de atualização é tão baixa que é melhor simplesmente salvar o endereço nos favoritos, apenas para lembrar que o site existe.
- Você finalmente percebeu que o conteúdo não é lá essas coisas.
4. Ficar de olho nas tendências (trends)

A fórmula é simples: se um feed tende a ser muito atualizado (subscription trends), mas não é acompanhado pela leitura dos itens (reading trends), provavelmente seja hora de riscá-lo de sua lista. Não tenha pena.
Ao seguir essas práticas, percebi que passei a gastar um parte muito menor do meu dia com a tarefa de me manter atualizado. É claro que nem sempre é possível seguir todas elas à risca, mas não custa nada tentar.
Leia também
6. 08.
Um recurso capaz de aumentar a produtividade durante o desenvolvimento é ter por perto uma referência fácil de consultar sobre a linguagem ou tecnologia em uso no momento. Apesar de todas as facilidades de pesquisa online na internet ou nas próprias ferramentas de desenvolvimento, muitas vezes ainda é mais fácil recorrer à boa e velha "cola" em papel, também conhecida como "pesca" ou "fila" :)
Como nesse caso não se trata de enganar ninguém, aí vai uma lista de alguns bons cheatsheets para imprimir e manter ao alcance da mão:
Update:
- Pylons , por Walter Cruz
Leia também
29. 05.
UPDATE: Este post está participando da promoção de aniversário do Efetividade.net e foi atualizado para se adequar aos critérios de conformidade. Nada mais justo, uma vez que foi por inspiração do Efetividade.net que resolvi compartilhar a dica a seguir.
Certa vez li que ficaríamos surpresos com a quantidade de pessoas que usam as mais diversas ferramentas com um propósito completamente diferente daquele para o qual foram planejadas. Tentei recordar se poderia ser contado nesse grupo e acabei lembrando da agenda telefônica mais eficiente que uso hoje em dia: o Gmail (e não estou falando do cadastro de contatos).
Para isso, conto com a ajuda dos recursos de labels, aliases, filtros e da própria busca. Uma vez que passo boa parte do dia com o Gmail aberto, não consegui pensar em nada mais prático para armazenar e encontrar números de telefone com rapidez. O procedimento é simples, vamos a ele:
1 - Crie um contato chamado "Telefones" ou outro nome de sua preferência.
2 - No campo Primary Email informe seu próprio email com o alias "telefones" . Para isso basta utilizar o sinal de adição (+ ), como se estivesse concatenando seu username ao alias. Ex.: seu.endereco+telefones@gmail.com 
3 - Crie um label chamado "telefones" .

4 - Crie um filtro com o critério to:(seu.endereco+telefones@gmail.com) e com as ações de arquivar automaticamente (Skip the Inbox ) e aplicar o label (Apply the label ) "telefones" criado no passo anterior.


Fazendo isso a "infraestrutura" da sua agenda já estará pronta. A partir de agora, toda vez que for preciso anotar um telefone, basta enviar um e-mail para o contato "Telefones" (o recurso de autocomplemento ajuda, por isso a necessidade de criar o contato com esse nome), com o nome da pessoa/empresa/contato no subject e o telefone na primeira linha do corpo da mensagem. Fazendo assim, nossa lista telefônica fica com aparência mais agradável.

Na hora de recuperar um determinado número, é só tirar vantagem da busca do Gmail. Foi para facilitar a pesquisa que criamos o label "telefones". Para saber o telefone de Fulano de Tal, basta preencher o campo de busca com "label:telefones fulano". Rápido e fácil.
Além da possibilidade de enviar o e-mail para o contato errado, não consegui pensar em mais nenhuma desvantagem desse processo. Em todo caso, sugestões de melhoria são bem vindas nos comentários.
Leia também
23. 05.
Esta versão do script está obsoleta. A nova versão está disponível no artigo bovespa-utils: nova versão da cotação de ações em Python
Faz um tempo que empreguei uns dois intervalos de almoço para escrever um script que recupera a variação atual de uma determinada ação no site da Bovespa. Caso alguém ache útil, vale advertir que o código é bem simples e poderia ser mais robusto. Comentários e sugestões são bem vindos.
Exemplo de uso: Obtendo a cotação de Petrobras PN.
$ python bsq.py PETR4
Leia também
30. 05.
Estas quatro extensões para o Firefox são companhias inseparáveis, instaladas em todas as estações de trabalho que preciso usar rotineiramente. Nas situações de emergência, elas entram em ação com o Portable Firefox que mantenho no pen drive.
A extensão para o del.icio.us permite “taguear” (”rotular” seria uma ótima tradução, sob o risco de ser incompreendida) páginas interessantes em um clique.
O Sage é um agregador de feeds RSS que, por funcionar dentro do próprio browser, torna a experiência de acompanhar notícias muito mais prática.
O Performancing permite ter acesso instantâneo à área de edição e publicação de vários tipos de sistemas de gerenciamento de conteúdo. Essa rapidez impede que boas idéias para posts - e também as ruins - sejam perdidas no intervalo entre o insight e o fim de todo o processo de acessar o site e fazer o login.
O último integrante do quarteto é o novato Google Notebook, que dá show quando o assunto é garimpar referências e trechos de textos em diferentes páginas.

Rodrigo Amaral