Este repositório foi criado para compartilhar a solução dos desafios desenvolvidos ao longo da trilha.
01 Calculadora em JS
- Utilizou-se o(s) pacote(s):
- readline: para leitura de entradas do usuário via console
A calculadora feita suporta as operações de:
- soma (com uso do sinal "+")
- subtração (com uso do sinal "-")
- multiplicação (com uso do sinal "*")
- divisão (com uso do sinal "/")
- divisão inteira (com uso do sinal "//")
- resto da divisão (com uso do sinal "%")
- potenciação (com uso do sinal "**")
- seno, cálculo do seno unidade em radianos (com uso da string "sin")
- cosseno, cálculo do cosseno unidade em radianos (com uso da string "cos")
- tangente, cálculo da tangente unidade em radianos (com uso da string "tan")
02 ifs Hadouken
O objetivo nesse desafio foi reduzir uma sequência de ifs aninhado, apelidados de "ifs hadouken" devido ao seu formato.
O código original a ser simplicado é mostrado na imagem abaixo.
- Nesse desafio utilizou-se o(s) pacote(s):
- readline: para leitura de entradas do usuário via console
A imagem abaixo mostra a parte do código que desempenhou a mesma função dos ifs hadouken.
O programa ao ser executado pede informações sobre o usuário de que se deseja saber sua situação cadastral. As imagens abaixo mostram os usuários já cadastrados e a execução do código.
03 Validation hadouken
O objetivo nesse desafio da aula ao vivo, foi reduzir uma sequência de ifs aninhado utilizados para validação de dados de usuário, além de utilizar uma estrutura para tratamento de erros para retornar todos os erros da validação.
Na solução utilizada, armazenou-se o usuário em uma objeto onde as chaves são os atributos do usuário.
A imagem abaixo mostra a parte do código que desempenhou a mesma função dos ifs hadouken.
O programa ao ser executado valida as informações do usuário. As imagens abaixo mostram o usuário que se deseja validar e a execução do código de validação.
04 Diagrama de BD relacional
Criar um diagrama de um banco de dados relacional, usando as boas práticas passadas na aula, o principal objetivo desse desafio é estarem praticando os seus conhecimentos
- Nomes de tabelas deverão ser no plural
- Nomes de banco, tabelas, colunas e chaves devem ser em inglês ou português, evite misturá-los
- Não precisa focar em um banco de dados, pense que seu diagrama deverá apenas mostrar a organização das tabelas e seus relacionamentos
Você como analista de banco de dados foi chamado para estar diagramando o banco de dados de um e-commerce de uma empresa cujo o produto principal de suas vendas é vestuário (calças, blusas, bermudas, etc.), você deverá levar em consideração os seguintes pontos:
Obs.: Use sua criatividade para desenhar o banco, os pontos acima são somente alguns itens que você deverá se preocupar, o restante do diagrama será por sua conta
A solução foi feita no site dbdiagram o qual usa DBML - Database Markup Language, para desenho dos diagramas. Segue abaixo o diagrama implementado, com o código-fonte em DBML à esquerda e o diagrama à direita.
05 Injection SQL Attack
- O código original, conforme imagens abaixo, permitia a possibilidade de inserir queries na url da requisição.
- Após a correção abaixo (inserção do '$1' para indicar que só se adiciona 1 elemento à query), a ORM passou a tratar a entrada da requisição, impedindo a utilização de queries indesejadas (como seleção de múltiplos usuários, ou até mesmo inserção e deleção de usuários).
06 Timing attack
- O código original (em "original.js"), conforme imagens abaixo, permitia que o invasor soubesse se o usuário existia no sistema pela diferença no tempo de validação entre o caso em que houvesse um user válido e um user inválido.
- Na solução (em "index.js"), utilizou-se um validação de uma senha falsa para os usuários inválidos/inexistentes no banco, pois de todo modo ao final da validação seria feito tanto a validação da senha quanto do user. Seguem imagens da solução, como pode ser visto o tempo de requisição foi bem próximo.
07 Nest API Deploy no Heroku
Aplicação simples análoga a um CRUD para .
- Instalação de dependências
$ npm install
- Lista de comandos para transforma repositório em container https://www.docker.com/products/docker-desktop
# Compor container
$ docker-compose up
# Build de projeto
$ docker build -t foo
- Lista de comandos para deploy em Heroku
# Login de usuário
$ heroku login
# Login em registro de containers
$ heroku container:login
# Enviar container para projeto heroku
$ heroku container:push web -a NomeProjeto
# Realizar deploy
$ heroku container:release web -a NomeProjeto
# Abrir projeto no navegador
$ heroku open -a NomeProjeto
- Segue o link do deploy do projeto: https://nestcampapi.herokuapp.com/
Nest is MIT licensed.
https://diogommartins.wordpress.com/2016/08/22/como-se-defender-de-ifs-hadouken/ https://dev.to/danielhe4rt/tres-conceitos-para-um-codigo-limpo-3mdo