Cuidado com o operador * de listas aplicado em objetos !
class Arquivos {
List<String> arquivosValidos = []
}
Arquivos arquivo = new Arquivos()
arquivo*.arquivosValidos.empty // retorna **false**
Porque? Vide abaixo:
arquivo*.arquivosValidos // retorna **[[]]**
arquivo*.arquivosValidos*.empty // retorna **[true]**
Explicação:
Usar o * em um objeto diretamente (e não em uma lista) transforma o objeto em uma lista de um único objeto... Leia o exemplo novamente e perceba a lógica
Related cards:
Resumo-Guia de Artigo "Substituir Throw com Notification Pattern"
Explicação
- Exception's deveriam ser usadas para exceções de fato, e não para a logica tradicional da aplicação, como é comumente usada em validações
- No contexto de validações é ruim para o usuário ter de ficar obtendo os erros um a um. É pr...
Desempenho no Grails ao salvar objetos em lote
Em um dos meus estudos em Grails me deparei com uma certa lentidão ao salvar objetos no banco, mais especificamente ao ler um arquivo csv e salvar os dados no banco.
Segue um exemplo: Temos uma lista de pessoas que realizaram uma ligação para out...
Mudar o rótulo e o ponto de montagem de uma partição no Ubuntu
Para ilustração deste card consideraremos os seguintes nomes de exemplo
- Nome antigo da partição a ser alterado: work
- Nome novo da partição a ser montada: WORK
Observação inicial
- Este card ilustra os passos necessários para mudar o...
org.apache.http.NoHttpResponseException
Eu tinha um cenário em que precisava verificar de tempos em tempos, se uma determinada tarefa havia concluído, numa implementação como a do código a seguir:
int qtdSegundosEspera = 20
while (tarefaEmExecucao) {
registreEventoTarefaEmExecu...
RECUPERANDO BASES POSTGRES COM TUPLAS CORROMPIDAS
PROBLEMA
Durante o backup de um banco ocorre:
pg_dump: Cópia do conteúdo da tabela "TABELA_EXEMPLO" falhou: PQgetResult() falhou.
pg_dump: Mensagem de erro do servidor: ERRO: compressed data is corrupt
pg_dump: O comando foi: COP...
Melhorias de performance atacando apenas os mapeamentos do hibernate
Um dos grandes problemas de desempenho que uma aplicação pode enfrentar é o de acesso ao banco, pois como bem sabemos o acesso ao disco é muito mais lento que o acesso à memória.
Um ponto que pode ser atacado para prover mais performance à aplicaç...
Configuração do ambiente com o nodejs no linux (ubuntu, RHEL, CentOS)
Instalação com o NVM (Node Version Manager) --> Recomendado
sudo apt-get install build-essential
wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh
nvm install v0.11.10
...
(Groovy) Melhor desempenho para ordenação múltipla em listas
class Foo {
Long a
Long b
Long c
String toString() { "(A:$a B:$b C:$c)" }
}
def ls = [
new Foo(a: 10, b: 9000, c: 3),
new Foo(a: 10, b: 30, c: 9),
new Foo(a: 10, b: 1000, c: 2),
new Foo(a: 10,...
DICAS: Comando impdp do Oracle
Exemplo de comando:
impdp system/system directory=data_dump dumpfile=ipvprod.dmp schemas=admwpd,admcto,wpd,custos logfile=impdp_homolog.log
Dica 01: O parâmetro directory
- O parâmetro directory NÃO é um diretório físico do seu computador. Ele ...
Postgres anteriores a 9.5 - Cuidado com precedência de operadores !
No momento em que escrevo (11/10/2016) o postgres já lançou até a versão 9.6
Na versão 9.5 do postgres houve uma correção das precedências dos operadores se adaptando ao SQL standard
Como consequência temos a possibilidade de utilizar a seguinte...