
Security News
Risky Biz Podcast: Making Reachability Analysis Work in Real-World Codebases
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
github.com/antoniofmoliveira/fullcycle-multithreading
Neste desafio você terá que usar o que aprendemos com Multithreading e APIs para buscar o resultado mais rápido entre duas APIs distintas.
As duas requisições serão feitas simultaneamente para as seguintes APIs:
https://brasilapi.com.br/api/cep/v1/ + cep
http://viacep.com.br/ws/ + cep + /json/
Os requisitos para este desafio são:
Acatar a API que entregar a resposta mais rápida e descartar a resposta mais lenta.
O resultado da request deverá ser exibido no command line com os dados do endereço, bem como qual API a enviou.
Limitar o tempo de resposta em 1 segundo. Caso contrário, o erro de timeout deve ser exibido.
brasilapi.200.json
- resposta status 200 da brasilapi{
"cep": "39408078",
"state": "MG",
"city": "Montes Claros",
"neighborhood": "Ibituruna",
"street": "Avenida Herlindo Silveira",
"service": "open-cep"
}
brasilapi.400.json
- resposta status 400 da brasilapi - cep com quantidade de dígitos diferente de 8{
"message": "CEP deve conter exatamente 8 caracteres.",
"type": "validation_error",
"name": "CepPromiseError",
"errors": [
{
"message": "CEP informado possui mais do que 8 caracteres.",
"service": "cep_validation"
}
]
}
brasilapi.404.json
- resposta status 404 da brasilapi - cep não encontrado{
"message": "Todos os serviços de CEP retornaram erro.",
"type": "service_error",
"name": "CepPromiseError",
"errors": [
{
"name": "ServiceError",
"message": "A autenticacao de null falhou!",
"service": "correios"
},
{
"name": "ServiceError",
"message": "Erro ao se conectar com o serviço ViaCEP.",
"service": "viacep"
},
{
"name": "ServiceError",
"message": "Erro ao se conectar com o serviço WideNet.",
"service": "widenet"
},
{
"name": "ServiceError",
"message": "CEP não encontrado na base dos Correios.",
"service": "correios-alt"
}
]
}
viacep.200.json
- resposta status 200 da viacep{
"cep": "39408-078",
"logradouro": "Avenida Herlindo Silveira",
"complemento": "até 499/500",
"unidade": "",
"bairro": "Ibituruna",
"localidade": "Montes Claros",
"uf": "MG",
"estado": "Minas Gerais",
"regiao": "Sudeste",
"ibge": "3143302",
"gia": "",
"ddd": "38",
"siafi": "4865"
}
viacep.200.erro.json
- resposta da viacep para cep não encontrado{
"erro": "true"
}
viacep.400.html
- resposta status 400 da viacep - cep com quantidade de dígitos diferente de 8<!DOCTYPE HTML>
<html lang="pt-br">
<head>
<title>ViaCEP 400</title>
<meta charset="utf-8" />
<style type="text/css">
h1 {
color: #555;
text-align: center;
font-size: 4em;
}
h2, h3 {
color: #666;
text-align: center;
font-size: 3em;
}
h3 {
font-size: 1.5em;
}
</style>
</head>
<body>
<h1>Http 400</h1>
<h3>Verifique a URL</h3>
<h3>{Bad Request}</h3>
</body>
</html>
saida.txt
- cópia da saída do terminal para várias execuções da rotina na versão antigaantonio@DG15:~/DEV/full-cycle/multithreading$ go run main.go
2024/10/09 09:37:59 Usage: go run main.go <cep>
exit status 1
antonio@DG15:~/DEV/full-cycle/multithreading$ go run main.go 3940807</>
2024/10/09 09:38:12 Return from ViaCep
2024/10/09 09:38:12 cep must have 8 digits
antonio@DG15:~/DEV/full-cycle/multithreading$ go run main.go 394080788
2024/10/09 09:38:17 Return from Brasilapi
2024/10/09 09:38:17 cep must have 8 digits
antonio@DG15:~/DEV/full-cycle/multithreading$ go run main.go 39408079
2024/10/09 09:38:25 Return from Brasilapi
2024/10/09 09:38:25 not found
antonio@DG15:~/DEV/full-cycle/multithreading$ go run main.go 39408078
2024/10/09 09:38:30 Return from Brasilapi
2024/10/09 09:38:30 {"cep":"39408078","state":"MG","city":"Montes
Claros","neighborhood":"Ibituruna","street":"Avenida Herlindo Silveira","service":"open-cep"}
antonio@DG15:~/DEV/full-cycle/multithreading$ go run main.go 39408078
2024/10/09 09:52:53 Return from ViaCep
2024/10/09 09:52:53 {
"cep": "39408-078",
"logradouro": "Avenida Herlindo Silveira",
"complemento": "até 499/500",
"unidade": "",
"bairro": "Ibituruna",
"localidade": "Montes Claros",
"uf": "MG",
"estado": "Minas Gerais",
"regiao": "Sudeste",
"ibge": "3143302",
"gia": "",
"ddd": "38",
"siafi": "4865"
}
antonio@DG15:~/DEV/full-cycle/multithreading$ go run main.go 39408078
^C2024/10/09 09:47:26 canceling query
clean architecture
tests
padronização de saída
saída de tela da nova versão
$ make newversion
go run cmd/main.go -cep 39408078
{"time":"2024-10-28T11:51:08.103415713-03:00","level":"INFO","msg":"ExecuteQueries: Context deadline exceeded"}
{"time":"2024-10-28T11:51:08.134042302-03:00","level":"INFO","msg":"Brasilapi: canceled context"}
{"time":"2024-10-28T11:51:08.214412032-03:00","level":"INFO","msg":"Viacep: canceled context"}
$ make newversion
go run cmd/main.go -cep 39408078
{"time":"2024-10-28T11:51:18.111387716-03:00","level":"INFO","msg":"Return from Brasilapi","cep":{"cep":"39408078","state":"MG","city":"Montes Claros","neighborhood":"Ibituruna","street":"Avenida Herlindo Silveira"}}
{"time":"2024-10-28T11:51:18.821722504-03:00","level":"INFO","msg":"Viacep: canceled context"}
$ make newversion
go run cmd/main.go -cep 39408078
{"time":"2024-10-28T11:51:35.623727625-03:00","level":"INFO","msg":"Return from Viacep","cep":{"cep":"39408-078","state":"MG","city":"Montes Claros","neighborhood":"Ibituruna","street":"Avenida Herlindo Silveira"}}
{"time":"2024-10-28T11:51:35.696273638-03:00","level":"INFO","msg":"Brasilapi: canceled context"}
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.
Security News
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.