LifeLog

A jornada de aprendizado de Samuel Medeiros

Dev · Projetos · Estudos · Descobertas

⌘K
15 DE SET. DE 2026
14 DE SET. DE 2026
13 DE SET. DE 2026
12 DE SET. DE 2026
11 DE SET. DE 2026
A impressão digital que ninguém ensinou a ler — quando a rede reconhece seu cliente pelo aperto de mão
Segurança
11 de set. de 2026

A impressão digital que ninguém ensinou a ler — quando a rede reconhece seu cliente pelo aperto de mão

Duas máquinas, o mesmo código, a mesma chave. Uma recebia 200, a outra tomava 403 com error code: 1010. Nenhum token errado, nenhuma regra de firewall visível: o filtro olhou para o aperto de mão TLS e reconheceu a assinatura de um cliente automatizado antes de qualquer requisição existir. Este post é sobre a camada de identidade que não aparece nos logs de aplicação.

Continuar lendo →
10 DE SET. DE 2026
09 DE SET. DE 2026
08 DE SET. DE 2026
07 DE SET. DE 2026
06 DE SET. DE 2026
05 DE SET. DE 2026
O estado que sobreviveu à realidade — quando o boot ressuscitou um mundo que não existe mais
Descobertas
05 de set. de 2026

O estado que sobreviveu à realidade — quando o boot ressuscitou um mundo que não existe mais

Depois de um reboot, tudo voltou verde: processo de pé, health ok — e a página não abria em lugar nenhum. O serviço tinha ressuscitado com as instruções de uma vida passada, congeladas num arquivo de estado, enquanto o mundo lá fora mudava de endereço. O post cobre a caçada, o fix na fonte (estado velho morre a cada partida, endereço definido em um lugar só) e a segunda metade da história: um anúncio que só falava com uma interface de nome fixo, no dia em que o sistema decidiu renomeá-la.

Continuar lendo →
A exceção que foi escrita duas vezes — calar um alarme não é definir política
Segurança
05 de set. de 2026

A exceção que foi escrita duas vezes — calar um alarme não é definir política

Em 11 de agosto coloquei um caçador de segredos na esteira do blog. No dia seguinte ele apontou um hash de build como se fosse chave. Silenciei com uma entrada amarrada à impressão digital daquele achado específico. Dezesseis dias depois precisei voltar no mesmo ponto e escrever a exceção de novo, agora como política. Essa é a diferença entre suprimir um evento e definir o escopo do que nunca deveria alarmar.

Continuar lendo →
04 DE SET. DE 2026
03 DE SET. DE 2026
02 DE SET. DE 2026
01 DE SET. DE 2026
31 DE AGO. DE 2026
30 DE AGO. DE 2026
29 DE AGO. DE 2026
28 DE AGO. DE 2026
27 DE AGO. DE 2026
26 DE AGO. DE 2026
25 DE AGO. DE 2026
24 DE AGO. DE 2026
23 DE AGO. DE 2026
22 DE AGO. DE 2026
21 DE AGO. DE 2026
20 DE AGO. DE 2026
19 DE AGO. DE 2026
18 DE AGO. DE 2026
17 DE AGO. DE 2026
16 DE AGO. DE 2026
15 DE AGO. DE 2026
14 DE AGO. DE 2026
13 DE AGO. DE 2026
12 DE AGO. DE 2026
11 DE AGO. DE 2026
10 DE AGO. DE 2026
09 DE AGO. DE 2026
O lock que nasceu no loop errado — e o browser pool que dizia 'não disponível neste worker'
Arachne
09 de ago. de 2026

O lock que nasceu no loop errado — e o browser pool que dizia 'não disponível neste worker'

De madrugada, o Arachne acordava intermitente: o workflow de scraping falhava com 'browser agent não disponível neste worker'. O journal mostrava um RuntimeError enigmático: o lock do browser pool estava preso a um event loop que não era o do worker. A causa: asyncio.Lock() criado no import. O fix: lazy init — nascer dentro do loop certo.

Continuar lendo →
08 DE AGO. DE 2026
07 DE AGO. DE 2026
06 DE AGO. DE 2026
05 DE AGO. DE 2026
04 DE AGO. DE 2026
03 DE AGO. DE 2026
02 DE AGO. DE 2026
01 DE AGO. DE 2026
31 DE JUL. DE 2026
30 DE JUL. DE 2026
29 DE JUL. DE 2026
28 DE JUL. DE 2026
25 DE JUL. DE 2026
24 DE JUL. DE 2026
23 DE JUL. DE 2026
22 DE JUL. DE 2026
21 DE JUL. DE 2026
20 DE JUL. DE 2026
19 DE JUL. DE 2026
18 DE JUL. DE 2026
17 DE JUL. DE 2026
16 DE JUL. DE 2026
15 DE JUL. DE 2026
14 DE JUL. DE 2026
13 DE JUL. DE 2026
12 DE JUL. DE 2026
08 DE JUL. DE 2026
28 DE MAI. DE 2026
24 DE ABR. DE 2026