Base64 sin lágrimas (Unicode)
Base64 convierte bytes a ASCII para que lo binario sobreviva canales de texto (emails, JSON, URLs). Las lágrimas vienen de Unicode: btoa() solo maneja Latin-1 — '✓' rompe si no codificas a UTF-8 antes.
Regla: TextEncoder → bytes → base64 al entrar; base64 → bytes → TextDecoder al salir. En URLs usa alfabeto seguro (-_ en vez de +/) y sin relleno.
Errores: btoa(unicode) rompiendo o mojibake, pegar líneas cortadas con saltos, y tratar base64 como cifrado (es embalaje, legible por cualquiera).
Ejemplo: 'Hello ✓' → bytes UTF-8 → 'SGVsbG8g4pyT'. Decodifica con el mismo paso UTF-8 y el ✓ sobrevive.
Prueba: Base64 codificar / decodificar · URL codificar / decodificar
JWTs: qué prueba el decode y qué no
Decodificar un JWT no prueba confianza: header y payload son base64url legible por cualquiera — solo la firma verificada en servidor prueba quién lo emitió.
Lee el payload para depurar (usuario, expiración exp, scopes) y verifica la firma donde viven los secretos. Firma válida pero expirado es problema de reloj; firma mala es falsificación.
Errores: esconder secretos en el payload (se lee), aceptar alg:none, 'verificar' en cliente e ignorar exp/margen (60s) con relojes distribuidos.
Ejemplo: exp 1788297600 → 08-09-2026T00:00:00Z. Pasado eso, el token es decoración — recházalo antes de nada.
Prueba: Decodificador JWT · Verificador checksum
Notación CIDR en una página
CIDR en una página: /24 son 24 bits de red y 8 de hosts (254 útiles). Máscara 255.255.255.0, red .0, broadcast .255, útiles .1–.254.
Tabla de memoria: /30 = 2 hosts (enlaces), /29 = 6, /24 = 254, /16 = 65.534, /8 = 16,7M. Cada bit quitado a hosts duplica las redes y parte cada una.
Errores: contar red/broadcast como útiles y solapar subredes (10.0.0.0/23 contiene a 10.0.1.0/24).
Ejemplo: 192.168.1.0/24 → máscara 255.255.255.0, rango .1–.254, broadcast .255. ¿Necesitas 500 hosts? /23 (510 útiles), no /24.
Prueba: Calculadora CIDR / Subred · IP ⇄ Entero