| Dificuldade | Nº de Desafios | Npcs |
|---|---|---|
| Fácil | 4 | Raditz, Saibamen, Nappa, Guldo |
| Médio | 5 | Vegeta, Capitão Ginyu, Freeza (Forma 1-3), Freeza (Forma Final), Androides 17/18 |
| Difícil | 5 | Cell Imperfeito, Cell Semi-Perfeito, Cell Perfeito, Dabura, Majin Buu |
| Épico | 6 | Super Buu, Kid Buu, Beerus, Frost, Hit, Goku Black |
| Divino | 7 | Whis, Zamasu, Goku Black Rosé, Zamasu Fundido, Toppo, Jiren |
Esses dias estava ouvindo o podcast Papinho Tech e, em um dado momento, o convidado — um dev bem conhecido da comunidade Java — soltou uma fala que me fez parar pra pensar:
“Me perguntaram se eu entendia do Garbage Collector do Java. Eu falei: pra quê? Ele é automático, já limpa a memória sozinho.”
Achei engraçado na hora, mas depois fiquei refletindo sobre o que essa frase realmente significa. Não é sobre a resposta em si, mas sobre como ela reflete um pensamento que ainda está muito presente em parte da comunidade Java.
Tem uma galera que parece acreditar que, no Java, “tudo é resolvido pela JVM”. A abstração de tudo, a confiança na magia por trás da linguagem, o uso de frameworks que nunca se questiona... Essa mentalidade, por mais prática que tenha sido no passado, acabou criando uma espécie de Javismo Cultural — uma forma de pensar que, muitas vezes, complica mais do que resolve.
Kotlin Code:
suspend fun fetchForUserStatus(uniqueId: UUID): UserStatus? {
return repository.findOne(uniqueId);
}Java Code:
public CompletableFuture<@Nullable UserStautus> fetchForUserStatus(UUID uniqueId) { Ou como evitar que dados ruins entrem e piorem seu código
Recentemente, me deparei com um bug causado por um valor inesperado que passou despercebido na entrada de um sistema. Nada muito grave, mas o suficiente para causar uma dor de cabeça. Foi um daqueles momentos em que pensei: "Eu já devia ter validado isso na borda."
Essa situação reforça algo que considero essencial em qualquer projeto: validar os dados desde a entrada. Pode parecer uma prática simples, mas ela evita problemas muito maiores lá na frente.
Chamamos de "borda" qualquer ponto de entrada de dados no seu sistema. Pode ser um endpoint de API, um formulário da web, uma fila de mensagens, um arquivo de configuração, ou até mesmo o construtor de uma classe. Sempre que você recebe algo de fora — ou até de outra parte do seu próprio sistema — está lidando com uma borda.
| package parser | |
| import "regexp" | |
| var ( | |
| onlyDigits = regexp.MustCompile(`^\d+$`) | |
| onlyZeroOrOne = regexp.MustCompile(`^[01]$`) | |
| signedInteger = regexp.MustCompile(`^-?\d+$`) | |
| floatNumber = regexp.MustCompile(`^-?\d+(\.\d+)?$`) |
| -ea | |
| -server | |
| -Xss256k | |
| -Xms4G | |
| -Xmx4G | |
| -XX:+IgnoreUnrecognizedVMOptions | |
| -XX:+UnlockExperimentalVMOptions | |
| -XX:+HeapDumpOnOutOfMemoryError | |
| -XX:-OmitStackTraceInFastThrow | |
| -XX:-UseSerialGC |
| { | |
| "status": "ABLE_TO_VOTE" | |
| } |
| { | |
| "result": "success", | |
| "documentation": "https://www.exchangerate-api.com/docs", | |
| "terms_of_use": "https://www.exchangerate-api.com/terms", | |
| "time_last_update_unix": 1737331202, | |
| "time_last_update_utc": "Mon, 20 Jan 2025 00:00:02 +0000", | |
| "time_next_update_unix": 1737417602, | |
| "time_next_update_utc": "Tue, 21 Jan 2025 00:00:02 +0000", | |
| "base_code": "USD", | |
| "conversion_rates": { |
| version: '3.8' | |
| services: | |
| zookeeper: | |
| image: confluentinc/cp-zookeeper:7.5.0 | |
| container_name: zookeeper | |
| ports: | |
| - "2181:2181" | |
| environment: | |
| ZOOKEEPER_CLIENT_PORT: 2181 |
| // | |
| // Source code recreated from a .class file by IntelliJ IDEA | |
| // (powered by FernFlower decompiler) | |
| // | |
| package org.bukkit; | |
| public enum Sound { | |
| AMBIENCE_CAVE, | |
| AMBIENCE_RAIN, |