Skip to content

Instantly share code, notes, and snippets.

View thiagosperandio's full-sized avatar

Thiago Sperandio thiagosperandio

View GitHub Profile
@thiagosperandio
thiagosperandio / Java - Usar Optional + equals() pra comparar objetos e atributos nulos.md
Last active July 19, 2019 12:30
Java - Usar Optional + equals() pra comparar objetos e atributos nulos

Usar Optional.ofNullable( obj ).map( x -> x.id ).equals( Optional.ofNullable( longNull ) );

Pra galerinha da gamb, vi um (monte de) código com comparação Long == Long, o que é errado.

No caso, a pessoa queria validar se o objeto é nulo, se o atributo é nulo e então comparar com um outro valor, que também poderia ser nulo. Por fim, fizeram a comparação de obj.getId() == idObjParam, o que é muito zuero. Devem ter medo de que obj.getId().equals(idObjParam) dê um null pointer exception. Compreensível, mas não tem jeito. Temos que usar o .equals() de qualquer forma pois é uma comparação entre objetos!

O exemplo desse snippet é para mostrar como fazer isso usando um único Optional.

No caso, o equals() ali não é do próprio tipo do objeto, mas é de Optional. Sendo assim, o atributo de comparação com o equals() foi também transformado em Optional para os resultados serem mais corretos.

@thiagosperandio
thiagosperandio / Docker - Limpar sistema removendo itens não usados.md
Last active July 17, 2021 15:04
Docker - Limpar sistema removendo itens não usados

Docker - Limpar sistema removendo itens não usados

Antes de tudo, analisar os tamanhos e usos:

  • docker system df
  • docker image ls
  • docker volume ls
  • docker ps

Limpar sistema:

  • docker system prune -a --filter label!=do-not-remove
@thiagosperandio
thiagosperandio / corrigir-repo-apos-gitignore.md
Last active November 11, 2019 18:54
.gitignore - Como remover um arquivo ou diretório que foi recentemente adicionado ao .ignore, mas que já existia no versionamento do seu projeto

.gitignore - Como remover um arquivo ou diretório que foi recentemente adicionado ao .ignore, mas que já existia no versionamento do seu projeto

A gente pode remover ele do versionamento com git rm --cached <FILENAME>.

Se for um diretório, a gente pode usar o parâmetro -r (git -rm -r --cached ) para ser feito recursivamente.

@thiagosperandio
thiagosperandio / Java toString() like JSON format.jsonc
Last active February 1, 2021 14:21
Java toString() like JSON format
{ "${object.className}" : { "${member.name}": "${member.value}", "${otherMembers}" } }
// ---
// Obs: Deixe uma linha em branco no final, se quiser mostrar cada Elemento em uma linha, no caso de uma lista desse mesmo elemento. Senão todos serão mostrados numa linha só.
Vinculações - análise de concomitância:
Regra: dado um elemento de apelido "c", pesquiso na base se existe um "cx" concomitante: [
and ( c.inicio <= cx.fim or cx.fim is null )
and ( c.fim is null or c.fim >= cx.inicio )
]
Obs.: Dependendo da análise, podem querer adicionar um "[ and c.id <> cx.id ]" para não considerar o mesmo elemento como concomitante. Mas tem caso que eu não posso usar isso.
Testes: Períodos concomitantes
01/02/2020 a 31/03/2021 - contrato

Quem estiver vendo essa mensagem após atualizar o git bash for win:

git: 'credential-manager' is not a git command. See 'git --help'.

The most similar command is
        credential-manager-core

Execute no terminal:

DB Comum

Transação:

Begin transaction
	...update/delete/insert table...
Rollback se erro
Commit se OK em tudo

JPA

@thiagosperandio
thiagosperandio / function makePhrase.js.html
Created January 3, 2023 15:25
function makePhrase.js.html
<script language="JavaScript">
function isArrayOrObject(val) {
return val instanceof Array || val instanceof Object;
}
function isStringOrWrapper(val) {
return typeof val === 'string' || val instanceof String;
}