VidaGeek.net

Linux, Open-source, Programação e Produtividade

Archive for the ‘Dicas’ Category

Infinitest

Lembro que em pelo menos um post anterior eu comentei sobre o Infinitest.

O Infinitest é uma ferramenta que roda seus testes unitários a cada vez que você salva algum arquivo. Mas ele não roda todos. Roda apenas os que são afetados pela modificação que você fez.

Isso é muito legal porque reduz muito o tempo de feedback. Imaginem, a cada vez que você salva o arquivo, teria que rodar todos os testes unitários (em geral é meio difícil saber se uma modificação afetou um teste ou não), o que pode demorar vários segundos em um projeto saudável. O infinitest te dá feedback quase instantâneo.

Outra coisa muito legal é que ele coloca um marcador de erro (sabe a marcação de erro de compilação do eclipse? pois é.) no teste que falhou ou onde foi lançada a exceção que impediu a execução do teste. Nem preciso dizer o quanto isso facilita para encontrar o problema.

A primeira versão (3.X) que usei dele, foi durante o desenvolvimento do Mirror. Na época era meio complicado colocar ele para rodar e tinha uns bugs meio estranhos (testes em loop infinito ficavam rodando eternamente). A versão atual (4.X) possui plugins para Eclipse e IntelliJ.

Vale muito a pena, em especial se você quer aprender TDD.

Posts Relacionados:

  • Um caso de ódio e talvez um pouco de amor (Também conhecido como automatizadores de build)
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.

  • 0 Comments
  • Filed under: Dicas, Java, Programacao
  • Tabelas assimétricas no LaTeX

    O post de hoje tem, novamente, a colaboração do nosso leitor Cacio Gazola. Mas desta vez foi ele que escreveu a base. Segue o texto adaptado:

    Eu estava precisando fazer uma tabela assimétrica (onde uma célula da tabela ocupa várias colunas na mesma linha, sem afetar as outras linhas) e pesquisando nos blogs e fóruns a fora, nada encontrei. Apenas o conteúdo basico sobre tabela.

    Até que encontrei, no wiki do LaTeX, uma dica interessante: o uso do \multicolumn {}{}{} para fazer o trabalho. Achei interessante pois em todos os tutoriais só mostram a aplicação do \multicolumn para a criação de texto em múltiplas colunas.

    Dentro do ambiente \begin{table} e do \begin{array} funciona perfeitamente, e deve ter os seguintes argumentos: \multicolumn{número de colunas}{disposição do texto}{texto da célula}. As disposições possíveis são as mesmas disponíveis para tabela e array (l, c, r). Também suporta o caractere | para criar a borda interna da grade da tabela (por exemplo: {c|}). Com isso é possivel mudar a disposição do texto dentro desta célula, independente do indicado em \begin{table} por exemplo.

    Segue um exemplo:
    \begin{displaymath}
    \begin{array}{rrrrrrr}
    (1\times 2^3) & + & (1\times 2^2) & + & (0\times 2^1) & + & (0\times 2^0) \\
    \Downarrow & &\Downarrow & &\Downarrow & & \Downarrow \\
    8_d & + & 4_d & + & 0_d & + & 0_d \\
    \hline
    \multicolumn{7}{c}{\textcolor{red}{12_d}}
    \end{array}
    \end{displaymath}

    Tabela

    Observe que todas as células devem ficar alinhadas a direita, menos a última que vai ocupar toda a linha e será centralizada.

    Pois bem, aí me bateu um dúvida: se existe um multicolumn será que existe um multirow? E não é que existe!?

    Ainda não cheguei a usar, mas encontrei uma página com as dicas de como fazê-lo:
    http://andrewjpage.com/index.php?/archives/43-Multirow-and-multicolumn-spanning-with-latex-tables.html

    Assim como o multicolumn, é necessário adicionar o pacote multirow no preâmbulo. Os dois juntos dão liberdade para criar tabelas totalmente assimétricas.

    Posts Relacionados:

  • Guia Latex - Parte IV: Estética (imagens e coloração)
  • Guia Latex - Parte III: Estruturando e marcando o texto
  • Guia Latex - Parte I: O que é e por que usar
  • Configuração de caminhos no LaTeX
  • UTF-8 no Latex
  • Guia Latex - Parte II: O Básico
  • Probabilidades no Banco Imobiliário
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.

  • 2 Comments
  • Filed under: Dicas, Latex
  • Hibernate Search

    Semanas atrás eu apanhei bastante do Hibernate Search. Na verdade, não foi dele que eu apanhei, mas de não entender algo fundamental sobre ele.

    Pra quem não sabe, o hibernate search é uma ferramenta muito legal para busca textual construída em cima do Lucene e do Hibernate. É realmente muito simples de configurar e usar. Mas tem um ponto que eu sabia mas não entendia as implicações.

    O cenário era o seguinte. Eu tinha uma aplicação que usava lucene para fazer busca textual. Tudo era feito na mão e tinhámos uma boa suite de testes cobrindo a busca textual. Como a utilização do lucene foi em um momento experimental (fazer e depois melhorar), resolvemos migrar para hibernate search. Tirando o tempo que demorei para notar que a versão atual do hibernate search exige Lucene 2 e não o 3 que usávamos, dois testes insistiam em não passar por nada no mundo.

    Todo o resto funcionava (o que praticamente garantia que a configuração estava certa). Depois de muito quebrar a cabeça, me lembrei de como o hibernate search funciona.

    O hibernate possui uma estrutura de interceptadores para muita coisa interna dele, inclusive operações básicas com o banco, como inserir, atualizar, remover, etc.

    O hibernate search entra exatamente nesse ponto. Cadastrando interceptadores para todas essas funções, ele é capaz de pegar os dados e serializar no índice do lucene também (notem que existe replicação de informação, uma vez que você terá os dados no banco e no índice do lucene). E esse é exatamente o ponto.

    O teste que não passava era um teste que simulava o comportamento do usuário, usando WebDriver. Na funcionalidade em questão, não eram enviados todos os dados do objeto, apenas a chave primária dele. Com isso, o hibernate search indexava apenas a chave, pois todo o resto do objeto estava vazio. Quando me lembrei disso, foi necessário apenas fazer uma busca antes de mandar gravar o objeto.

    Posts Relacionados:

  • Google Books Search ganha apoio alemão
  • Notícias Fresquinhas
  • O Mal da Google
  • YubNub
  • Wikipedia na linha de comando
  • Yahoo Hack Day 2008
  • Scripts para o Greasemoney do Firefox
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.

    Firefox 3.5 e Gears no Ubuntu

    Firefox 3.5, aqui vamos nós
    Apenas muito recentemente consegui fazer o Firefox 3.5 do Ubuntu, também conhecido como Shiretoko, funcionar com o plug-in Google Gears. Foram, basicamente, duas bobagens que impediram a instalação e o uso desse plug-in com facilidade.

    O primeiro problema é culpa do Ubuntu. O Firefox 3.5 vem rebatizado de Shiretoko no Ubuntu. Isso significa que o navegador não é reconhecido como Firefox pelos servidores. Assim, a página de instalação do Google Gears diz que seu navegador não é suportado. Para contornar isso, é necessário mudar o nome que seu navegador usa para se identificar para o servidor. Você pode mudar isso facilmente: abra seu navegador Shiretoko, acesse a URL “about:config”, confirme que você sabe o que está fazendo (!), filtre a lista por “useragent” e troque “Shiretoko” por “Firefox” no valor da chave “general.useragent.extra.firefox”. Para confirmar que isso deu certo, entre novamente na página do Google Gears. Se o botão de instalação apareceu, ok.

    O segundo problema aconteceu porque eu já utilizava o Google Gears no Firefox 3.0. Por algum motivo (não sei se isso acontece sempre), o Google Gears do Firefox 3.0 e o do Firefox 3.5 estavam utilizando a mesma pasta para guardar dados e configurações. Então o Gears do Firefox 3.5 encontrava as configurações do Gears do Firefox 3.0 e isso gerava diversos erros de navegação; redirecionamento sem fim no login do GMail, por exemplo. Infelizmente, a minha solução para esse problema foi apagar a pasta em que ficavam essas configurações: ~/.mozilla

    Depois de tudo isso e de baixar todos os meus e-mails do GMail novamente, finalmente funcionou! Se você tiver uma outra solução para o problema, compartilhe!

    Montagem tosca por mim mesmo, utilizando os ícones do Firefox 3.0, do Shiretoko e do Google Gears

    Posts Relacionados:

  • Livro grátis de Ubuntu
  • Ubuntu planeja versão móvel
  • Compartilhando pastas e arquivos com Ubuntu
  • Firefox começa a dominar Europa
  • Firefox na China
  • YubNub
  • Ubuntu Ganha o Parlamento Francês
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.