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


8. 07.

Há algum tempo a Sun contratou dois pythonistas renomados para aproximá-la da linguagem. Uma conseqüência natural dessa aproximação seria o suporte a Python em sua IDE NetBeans . Na verdade, a iniciativa já vinha de antes do recrutamento de Ted Leung e Frank Wierzbicki . O projeto NBPython , iniciado por Allan Davis , ganhou o auxílio dos dois novos colaboradores e uma versão inicial já está disponível para quem quiser testar. Por enquanto, o plugin só funciona em nightly builds , já que está em fase inicial de desenvolvimento.

Outra boa notícia vinda da Sun é o lançamento de seu Python Developer Center . O site ainda tem pouco conteúdo, mas não deixa de ser mais uma oportunidade de divulgar Python e seus frameworks para um público que, via de regra, ainda não despertou para o fato de que existe vida além do Java.

Referência: Python in NetBeans: NBPython

Leia também


3. 06.

O programa foi alterado para contemplar as modificações realizadas no site da Bovespa, que tinham inutilizado a versão anterior. Espero que seja de alguma utilidade para quem acompanha a Bolsa. Em breve pretendo soltar um novo release contendo também uma nova versão da interface gráfica, com mais funcionalidades. Postem suas críticas, dúvidas e sugestões nos comentários.

Download: bovespa-utils-0.0.2.tar.gz

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


28. 03.

A finalidade do módulo shelve é persistir objetos Python em disco, de maneira que seus dados possam ser recuperados e os objetos possam ser recriados posteriormente. Geralmente usamos este módulo quando precisamos preservar o estado de uma aplicação sem que seja necessário recorrer ao uso de bancos de dados relacionais. Um exemplo simples desse tipo de necessidade seria o armazenamento das configurações de um aplicativo.

Um shelf em Python é um objeto de estrutura semelhante à de um dicionário (dictionary), ou seja, mapeia pares de chave e valor. Um valor pode ser basicamente um objeto de qualquer tipo, mas a chave única que o identifica só poder ser do tipo string.

Para criar um novo shelf, basta utilizar a função open(), passando como argumento o nome do arquivo onde os objetos serão armazenados:

>>> import shelve
>>> shelf = shelve.open(‘exemplo.db’)

Feito isto, shelf pode ser usado como um dicionário convencional:

>>> shelf['Batman'] = ‘batman@provedor.com’
>>> shelf['Superman'] = ’superman@provedor.com’

Ao terminar de trabalhar com o shelf, é preciso fechar o arquivo:

>>> shelf.close()

Pronto. Está criado um arquivo em disco contendo, neste caso, o mapeamento de nomes para endereços de e-mail. Para recuperar os dados gravados em disco é só abrir novamente o arquivo e referenciar o índice desejado. Por exemplo, para obter o e-mail do Superman e mostrá-lo na tela, fazemos:

>>> contatos = shelve.open(‘exemplo.db’)
>>> print contatos['Superman']
superman@provedor.com

Apenas vamos demonstrar que a persistência é feita com qualquer tipo de objeto, não somente strings:

>>> class Carro(object):
        def __init__(self, modelo, ano):
            self.modelo = modelo
            self.ano = ano
>>> carros = shelve.open('carros.db')
>>> carros['XYZ-1234'] = Carro('Fusca', 1970)
>>> carros['ABC-9999'] = Carro('Corcel', 1975)
>>> carros.close()
>>> automoveis = shelve.open('carros.db')
>>> c = automoveis['XYZ-1234']
>>> print c.modelo, c.ano
Fusca 1970

Por padrão, as modificações realizadas em um objeto recuperado de um shelf não são persistidas. Para isso, é necessário fazer novamente o armazenamento explícito do objeto ou então utilizar a opção writeback=True.

Referência: shelve — Python object persistence

Leia também


13. 02.

ui.jquery.com

Foi lançada ontem a versão beta do jQuery UI 1.5. O jQuery UI é um conjunto de componentes visuais para construção de interfaces web baseado na popular biblioteca JavaScript jQuery . A intenção original era disponibilizar um release apenas para correção de defeitos, mas a equipe foi tomada pela empolgação e terminou por adicionar várias novas características ao produto, inclusive reescrevendo muita coisa do zero.

Entre as principais novidades estão a possibilidade de, a qualquer momento, acessar e modificar as opções passadas como argumento na inicialização dos componentes. Outras modificações dizem respeito à implementação de componentes como os draggables, slider e sortables, de modo a torná-los mais flexíveis e melhorar o desempenho.

Mais detalhes em: jQuery UI 1.5b: New API, more features, huge performance boost

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:

Leia também



Sobre o autor

Rodrigo Amaral Rodrigo Amaral
Desenvolvedor de Software, Brasil
View Rodrigo Amaral's profile on LinkedIn

PyConBrasil 2008

PyConBrasil 2008

Assine os feeds RSS

Categorias

Links

Meta