Skip to content

thi-costa/desafios-ioasys-trilha-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ioasysCamp - Trilha backend 2022

Este repositório foi criado para compartilhar a solução dos desafios desenvolvidos ao longo da trilha.

Desafios

01 Calculadora em JS
Nesse desafio foi feito como uma calculadora executada via console com uso do node.
  • 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")
A imagem abaixo mostram o funcionamento da calculadora.

MDN logo
02 ifs Hadouken

Objetivo do Desafio

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.

ifs hadouken

Descrição de solução

  • Nesse desafio utilizou-se o(s) pacote(s):
    • readline: para leitura de entradas do usuário via console
Na solução utilizada, armazenou-se os usuários em uma estrutura de Map onde as chaves são os ids dos usuários que representam um número único (o primeiro id é 0), e esse id é autoincrementado por 1 a cada criação de usuário. Foram cadastrados 2 usuários para testagem de funcionalidade do código.
A imagem abaixo mostra a parte do código que desempenhou a mesma função dos ifs hadouken.

Outputs

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.

Cadastro de usuários
Saída hadouken
03 Validation hadouken

Objetivo do Desafio

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.

Descrição de soluçã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.

Cadastro de usuários

Outputs

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.

Cadastro de usuários
04 Diagrama de BD relacional

Objetivo

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

Requistos

  • 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

Descrição de Desafio

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

Resolução

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.
previous code invalid user, previous code valid user and invalid password, previous code
  • 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.
valid user and invalid password invalid user and invalid password
07 Nest API Deploy no Heroku

Descrição

Aplicação simples análoga a um CRUD para .

Instalação

  • Instalação de dependências
$ npm install

Docker

# Compor container
$ docker-compose up

# Build de projeto
$ docker build -t foo

Heroku deploy

  • 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

Projeto

License

Nest is MIT licensed.

Referências

https://diogommartins.wordpress.com/2016/08/22/como-se-defender-de-ifs-hadouken/ https://dev.to/danielhe4rt/tres-conceitos-para-um-codigo-limpo-3mdo

About

Desafios de códigos trilha backend do camp ioasys 2022

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages