├── indicacoes ├── canais-youtube.md ├── repositorios.md ├── livros-programacao.md └── setup.md ├── backend ├── api-rest.md ├── configuracao-node.md └── sql-postgres.md ├── extras ├── extensoes-vscode.md └── atalhos-vscode.md ├── base-programacao ├── terminal.md └── git.md ├── readme.md ├── frontend └── html.md └── javascript └── javascript.md /indicacoes/canais-youtube.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /indicacoes/repositorios.md: -------------------------------------------------------------------------------- 1 | # Repositórios 2 | 3 | 1. [Livros Gratuitos](https://lnkd.in/dEWAV7Rs) 4 | 2. [Livros Gratuitos 2](https://lnkd.in/deig_37g) 5 | 3. [Templates Readme](https://lnkd.in/dnn-9hDb) 6 | 4. [Projeto NodeJS e Express (explicado)](https://lnkd.in/d_wWwvqD) 7 | 5. [Guia para Testes](https://lnkd.in/d_cJpJ2W) 8 | 6. [Roadmap](https://lnkd.in/d_ZmqhPd) 9 | 7. [Roadmap - site](https://lnkd.in/dj6_Qxfa) 10 | 8. [Guia para criar Tecnologia](https://lnkd.in/d_ZmqhPd) 11 | 9. [Guia do git](https://lnkd.in/dyKWfB_A) 12 | 10. [Guia do git - Site](https://lnkd.in/duS9dEZZ) 13 | -------------------------------------------------------------------------------- /backend/api-rest.md: -------------------------------------------------------------------------------- 1 | ## CRUD 2 | 3 | - **C**reate (POST) 4 | - **R**ead (GET) 5 | - **U**pdate (PUT) 6 | - **D**elete (DELETE) 7 | 8 | ## Métodos HTTP 9 | 10 | - GET - Lista um ou mais recurso 11 | - POST - Cria um novo recurso 12 | - PUT - Altera um recurso 13 | - PATCH - Altera parcialmente um recurso 14 | - DELETE - Deleta um Recurso 15 | 16 | ## Requisitos 17 | 18 | - Node e npm 19 | - VsCode 20 | 21 | ## Parâmetros nas requisições REST 22 | 23 | ```bash 24 | # Query Params 25 | ?name=jess&instagram=jess.coder 26 | 27 | # Route Params 28 | /pessoas/jess 29 | 30 | # Body Params 31 | { name: jess, 32 | instagram: jess.coder 33 | } 34 | ``` 35 | 36 | # Status Code 37 | 38 | - 100-199 - Informação 39 | - 200-299 - Sucesso 40 | - 300-399 - Redirecionamento 41 | - 400-499 - Erro no Cliente 42 | - 500-599 - Erro no Servidor 43 | -------------------------------------------------------------------------------- /extras/extensoes-vscode.md: -------------------------------------------------------------------------------- 1 | # Extensões VSCode 2 | 3 | 1. [Auto Close Tag](https://lnkd.in/dW_wUUWp) 4 | 2. [Auto Rename Tag](https://lnkd.in/dPniysrZ) 5 | 3. [Better Comments](https://lnkd.in/dastJxcG) 6 | 4. [Backet Peek](https://lnkd.in/dsvKw_fd) 7 | 5. [Indent-rainbow](https://lnkd.in/diXpfSnz) 8 | 6. [CodeSnap](https://lnkd.in/d9ZAmHyH) 9 | 7. [Color Highlight](https://lnkd.in/dNYmUmVp) 10 | 8. [Live Server](https://lnkd.in/dEWYfDwA) 11 | 9. [Live Preview](https://lnkd.in/dS--bcGh) 12 | 10. [Live Share](https://lnkd.in/d_QbRMeJ) 13 | 11. [Lorem Ipsum](https://lnkd.in/dkxEFBNH) 14 | 12. [Material Icon Theme](https://lnkd.in/d8yesDKg) 15 | 13. [Peacock](https://lnkd.in/dDGn85uF) 16 | 14. [PX to REM](https://lnkd.in/dGb7KKVn) 17 | 15. [Rainbow Brackets](https://lnkd.in/djAVq_ha) 18 | 16. [Prettier](https://lnkd.in/du4ER22v) 19 | 17. [Sonarlint](https://lnkd.in/d_GvQv_S) 20 | 18. [Tabnine](https://lnkd.in/dAcg-4BU) 21 | 19. [Thunder Client](https://lnkd.in/djDSRkhw) 22 | 20. [todo.md kanban board](https://lnkd.in/dUBydabc) 23 | -------------------------------------------------------------------------------- /base-programacao/terminal.md: -------------------------------------------------------------------------------- 1 | # Comandos Terminal 2 | 3 | 1. Exibir o caminho atual 4 | 5 | ```bash 6 | pwd 7 | ``` 8 | 9 | 2. Navegar entre pastas 10 | 11 | ```bash 12 | cd 13 | ``` 14 | 15 | 3. Listar arquivos e pastas 16 | 17 | ```bash 18 | ls 19 | ``` 20 | 21 | 4. criar pasta 22 | 23 | ```bash 24 | mkdir 25 | ``` 26 | 27 | 5. Apagar pasta 28 | 29 | ```bash 30 | rmdir 31 | ``` 32 | 33 | 6. Criar arquivo 34 | 35 | ```bash 36 | touch . 37 | ``` 38 | 39 | 7. Apagar arquivo 40 | 41 | ```bash 42 | rm . 43 | ``` 44 | 45 | 8. Copiar arquivos e pastas 46 | 47 | ```bash 48 | cp 49 | ``` 50 | 51 | 9. Mover ou renomear arquivos e pastas 52 | 53 | ```bash 54 | mv 55 | ``` 56 | 57 | 10. Limpar Terminal 58 | 59 | ```bash 60 | clear 61 | # atalhos 62 | ctrl + l 63 | # ou 64 | command + l 65 | ``` 66 | 67 | 12. Fechar terminal 68 | 69 | ```bash 70 | exit 71 | ``` 72 | 73 | 13. Abrir o VSCode na Pasta atual 74 | 75 | ```bash 76 | code . 77 | ``` 78 | 79 | 14. Abrir o VSCode em uma pasta especifica 80 | 81 | ```bash 82 | code 83 | ``` 84 | -------------------------------------------------------------------------------- /extras/atalhos-vscode.md: -------------------------------------------------------------------------------- 1 | ```Bash 2 | code . # Abre o vscode na pasta que está 3 | ctrl + n # Criar um arquivo 4 | ctrl + k + ctrl + o # Abrir pasta existente 5 | ctrl + s # Salvar os aquivos 6 | ctrl + shift + p # Palheta de comandos 7 | ctrl + ; # Comentar linha selecionada 8 | ctrl + l # Seleciona a linha 9 | alt + z # Adapta o conteudo pra sua tela 10 | 11 | ctrl + shift + D # Abre debug 12 | ctrl + o # Abrir um arquivo existente 13 | ctrl + h # Abre Localizar e Substituir 14 | ctrl + g # Abre o pesquisar por linha 15 | ctrl + f # Abre pesquisa (regex) 16 | ctrl + p # Abre a pesquisa 17 | @: # pesquisa components dentro do arquivo 18 | ctrl + space # Mostra o contéudo (inteligence) 19 | ctrl + ] # Divide a tela 20 | alt + seta # Move o código 21 | alt + shift + o # Ajusta imports por importância 22 | # Substitui palavra, seleciona todas as palavra iguais 23 | ctrl + shift + l 24 | # Substitui palavra, seleciona uma por vez 25 | ctrl + d 26 | # Seleciona varias linhas ao mesmo tempo 27 | ctrl + shift + seta ou alt + shift + seta 28 | # navegar pelas abas 29 | alt + numero da aba 30 | ctrl + tab 31 | ctrl + page down 32 | ctrl + page up 33 | # Abre o terminal integrado 34 | ctrl + '(plic) 35 | ``` 36 | -------------------------------------------------------------------------------- /base-programacao/git.md: -------------------------------------------------------------------------------- 1 | # Git Comandos Básicos 2 | 3 | 1. Inicializar o git no repositório 4 | 5 | ```bash 6 | git init 7 | ``` 8 | 9 | 2. Copiar repositório remoto 10 | 11 | ```bash 12 | git clone 13 | ``` 14 | 15 | 3. Lista as modificações atuais do repositório 16 | 17 | ```bash 18 | git status 19 | ``` 20 | 21 | 4. Lista histórico dos commits 22 | 23 | ```bash 24 | git log 25 | ``` 26 | 27 | 5. Adiciona o arquivo no palco (stage) 28 | 29 | ```bash 30 | git add 31 | ``` 32 | 33 | 6. Remove o arquivo do palco (stage) 34 | 35 | ```bash 36 | git reset 37 | ``` 38 | 39 | 7. Realiza o commit das modificações 40 | 41 | ```bash 42 | git commit -m "mensagem" 43 | ``` 44 | 45 | 8. Lista todas as branchs locais 46 | 47 | ```bash 48 | git branch 49 | ``` 50 | 51 | 9. Cria uma nova branch 52 | 53 | ```bash 54 | git branch 55 | ``` 56 | 57 | 10. Entra em uma branch 58 | 59 | ```bash 60 | git checkout 61 | ``` 62 | 63 | 11. Cria e entra em uma branch 64 | 65 | ```bash 66 | git checkout -b 67 | ``` 68 | 69 | 12. Puxa as modificações 70 | 71 | ```bash 72 | git pull origin 73 | ``` 74 | 75 | 13. Envia as modificações 76 | 77 | ```bash 78 | git push origin 79 | ``` 80 | -------------------------------------------------------------------------------- /indicacoes/livros-programacao.md: -------------------------------------------------------------------------------- 1 | # Livros de Programação 2 | 3 | 1. [Estruturas de Dados e Algoritmos com JavaScript: Escreva um Código - JavaScript Complexo e Eficaz Usando a Mais Recente ECMAScript](https://amzn.to/3wpWp4P) 4 | 5 | 2. [Entendendo Algoritmos: Um Guia Ilustrado Para Programadores e Outros Curiosos](https://amzn.to/3wrxi1l) 6 | 7 | 3. [O Programador Pragmático: De Aprendiz a Mestre](https://amzn.to/3sKHhgh) 8 | 9 | 4. [Expressões Regulares: Uma Abordagem Divertida](https://amzn.to/3MtyU05) 10 | 11 | 5. [Código limpo: Habilidades práticas do Agile Software](https://amzn.to/3wziGfr) 12 | 13 | 6. [O codificador limpo: Um código de conduta para programadores profissionais](https://amzn.to/3lnFrxN) 14 | 15 | 7. [Arquitetura limpa: O guia do artesão para estrutura e design de software](https://amzn.to/3PwvJXp) 16 | 17 | 8. [Domain-Driven Design: Atacando as complexidades no coração do software](https://amzn.to/3xxs8jF) 18 | 19 | 9. [Refatoração: Aperfeiçoando o Design de Códigos Existentes](https://amzn.to/3MSua3Q) 20 | 21 | 10. [O Programador Apaixonado. Construindo Uma Carreira Notável em Desenvolvimento de Software](https://amzn.to/3O5R2zh) 22 | 23 | 11. [Leis da Psicologia Aplicadas a UX: Usando Psicologia Para Projetar Produtos e Serviços Melhores](https://amzn.to/3pYDqOp) 24 | -------------------------------------------------------------------------------- /indicacoes/setup.md: -------------------------------------------------------------------------------- 1 | # Setup 2 | 3 | ## Meu Setup: 4 | 5 | Notebook Samsung (i5- 8gb, 256gb SSD, 15.6") [https://amzn.to/48GCqQx] (similar) 6 | 7 | Monitor Samsumg Curvo 27" [https://amzn.to/3F9TSiz] 8 | 9 | Teclado Mecânico [https://amzn.to/3RRvf1K] (similar) 10 | 11 | Mouse Dell [https://amzn.to/3LVbjr5] (similar) 12 | 13 | Mouse Pad Com Led [https://amzn.to/48PZmwS] 14 | 15 | ## Para Gravação: 16 | 17 | Microfone Fifine [https://amzn.to/46lpMVB] 18 | 19 | Suporte Mesa Articulado Para Microfone [https://amzn.to/46GTBPT] 20 | 21 | Webcam Logitech C922[https://amzn.to/45ocMgr] 22 | 23 | Tripe: [https://amzn.to/46J0obT] 24 | 25 | Light Panel [https://amzn.to/3rJWW1R] 26 | 27 | ## Dispositivos: 28 | 29 | Echo Show 8 [https://amzn.to/3Fa4bmP] 30 | 31 | Kindle 11ª Geração [https://amzn.to/3PQ9hK7] 32 | 33 | Fone com microfone JBL [https://amzn.to/46jqsdU] 34 | 35 | Fone de ouvido sem fio Haylou [https://amzn.to/46GoRib] 36 | 37 | Smartphone Samsung Galaxy A54 [https://amzn.to/3Qct3AW] 38 | 39 | Mesa Digitalizadora [https://amzn.to/3LVcxTd] 40 | 41 | ## Diversão: 42 | 43 | Ps5 [https://amzn.to/3rNs6FO] 44 | 45 | Smart TV TCL QLed 55" [https://amzn.to/3Qa9dWH] 46 | 47 | Smart TV Samsung QLed 55" [https://amzn.to/471QyST] (recomendo está, pois a minha tem dado bastante problemas é a TCL e tem dado bastante problema) 48 | 49 | ## kindle: 50 | 51 | Kindle 11ª Geração [https://amzn.to/3PPLfyW] (esse é igual ao meu) 52 | 53 | Kindle Paperwhite [https://amzn.to/3ZJig41] 54 | 55 | Kindle Paperwhite Signature Edition [https://amzn.to/3RLD8Wt] 56 | 57 | Kindle Oasis - [https://amzn.to/3PF4hb3] 58 | 59 | kindle unlimited: (30 dias grátis) 60 | [https://amzn.to/48F3hfx] 61 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Full-Stack Javascript 2 | 3 | Este repositório oferece uma ampla variedade de explicações destinadas a ajudar aqueles que desejam trilhar o caminho de se tornar um desenvolvedor Full-Stack em Javascript. 4 | 5 | O projeto ainda está sendo desenvolvido e você pode contribuir: 6 | 7 | - Realize o fork do Projeto 8 | - Faça as modificações 9 | - Crie uma Pull Request (PR) 10 | 11 | # Sumário 12 | 13 | # Base da Programação 14 | 15 | - [ ] Lógica da Programação 16 | - [ ] Algoritmo 17 | - [ ] Estrutura de Dados 18 | - [ ] Paradigmas da Programação 19 | - [ ] Arquitetura de Dados 20 | - [ ] Abstração 21 | - [ ] Sistema Operacional 22 | - [x] Terminal (comandos) 23 | - [x] Versionamento (Git) 24 | - [ ] Github 25 | 26 | ## JavaScript 27 | 28 | - [x] Variáveis 29 | - [x] Tipos de Dados 30 | - [x] Condicionais 31 | - [x] Laços de Repetição 32 | - [x] Funções 33 | - [x] Métodos de Strings 34 | - [x] Métodos de Array 35 | - [ ] Promise 36 | - [ ] Async await 37 | 38 | ## Backend 39 | 40 | - [x] Banco de Dados 41 | - [ ] Api Rest 42 | - [x] Configuração inicial projeto Node com express 43 | - [ ] Rotas, Middleware e Controllers 44 | 45 | ## Frontend 46 | 47 | - [x] HTML 48 | 49 | 50 | - [ ] Css 51 | 52 | - [ ] DOM 53 | 54 | - ReactJS 55 | - [ ] Componentização 56 | - [ ] Retorno de JSX 57 | - [ ] Propriedade 58 | - [ ] Estado 59 | - [ ] Hooks 60 | - [ ] useState 61 | - [ ] useEffect 62 | 63 | ## Indicações 64 | 65 | - [x] Indicações de Repositórios 66 | - [x] Indicações de Livros de Programação 67 | - [x] Indicações Setup 68 | - [ ] Indicações Canais youtube 69 | 70 | ## Extras 71 | 72 | - [x] Atalhos VSCode (Windows e Linux) 73 | - [x] Extensões VSCode 74 | -------------------------------------------------------------------------------- /backend/configuracao-node.md: -------------------------------------------------------------------------------- 1 | # Criando um CRUD com NodeJS e Express 2 | 3 | ## Vamos fazer as configurações iniciais do projeto 4 | 5 | 1. Crie uma pasta com o nome "crud" 6 | 2. Acesse a pasta no seu VsCode 7 | 3. Abra seu terminal integrado ao VsCode 8 | 4. Inicialize o projeto com o seguinte comando: 9 | 10 | ```bash 11 | npm init -y 12 | ``` 13 | 14 | Você vai perceber que um arquivo chamado package.json será criado. Este arquivo é responsável por armazenar todas as bibliotecas/libs que vamos usar no projeto, além de scripts para a execução do projeto. 15 | 16 | 4. Crie uma pasta chamada "src" e um arquivo chamado "index.js". A estrutura deve ficar assim: **crud/src/index.js** 17 | 5. Baixe a biblioteca **nodemon**, que será responsável por executar o projeto e observar suas modificações: 18 | 19 | ```bash 20 | npm install nodemon 21 | ``` 22 | 23 | Perceba que agora um novo arquivo chamado **package-lock.json** foi criado. Este arquivo lista as bibliotecas que já foram baixadas neste projeto, bem como as dependências dessas bibliotecas. Além disso, foi criada uma pasta chamada "node_modules" que armazena todas as bibliotecas utilizadas neste projeto. Caso deseje reinstalar as bibliotecas, você pode excluir a pasta "node_modules" e o arquivo "package-lock.json" e, em seguida, executar o comando **npm install** no seu terminal. 24 | 25 | 6. Crie um script chamado **dev** dentro do "package.json" com o seguinte comando: 26 | 27 | ```bash 28 | "scripts": { 29 | "dev": "nodemon src/index.js" 30 | } 31 | ``` 32 | 33 | Perceba que o script de test foi apagado e ficou somente o que vamos usar para este projeto. 34 | 35 | 7. Adicione no arquivo "src/index.js" o seguinte código: 36 | 37 | ```js 38 | console.log("Olá, Mundo!"); 39 | ``` 40 | 41 | 8. Execute o projeto com o seguinte comando: 42 | 43 | ```bash 44 | npm run dev 45 | ``` 46 | 47 | Perceba que o **dev** que estamos usando é o **script** que criamos no **package.json** 48 | 49 | 9. Para parar a execução do projeto, utilize o seguinte comando: 50 | 51 | ```bash 52 | ctrl + c #ou 53 | command + C 54 | ``` 55 | 56 | 10. Antes de fazer o upload para o GitHub, é importante criar um arquivo chamado ".gitignore" contendo as entradas para a pasta "node_modules" e o arquivo "package-lock.json". 57 | -------------------------------------------------------------------------------- /backend/sql-postgres.md: -------------------------------------------------------------------------------- 1 | # SQL 2 | 3 | ### Criando um banco de dados chamado "loja" 4 | 5 | ```sql 6 | create database loja; 7 | ``` 8 | 9 | ### Deletando um banco de dados chamado "loja" 10 | 11 | ```sql 12 | drop database if exists loja; 13 | ``` 14 | 15 | ### Criando uma tabela chamada "produtos" 16 | 17 | ```sql 18 | create table if not exists produtos ( 19 | id serial primary key, 20 | nome text, 21 | preco integer, 22 | ativo boolean 23 | ); 24 | ``` 25 | 26 | ### Inserindo registros na tabela "produtos" 27 | 28 | ```sql 29 | -- Notebook Samsung 30 | insert into produtos (nome, preco, ativo) values ('Notebook Samsung', 50000, true); 31 | -- Mouse Dell 32 | insert into produtos (nome, preco, ativo) values ('Mouse Dell', 2500, true); 33 | -- Monitor Samsung 34 | insert into produtos (nome, preco, ativo) values ('Monitor Samsung', 30000, false); 35 | ``` 36 | 37 | ### Listando todos os registros da tabela "produtos" 38 | 39 | ```sql 40 | select * from produtos; 41 | ``` 42 | 43 | ### Listando todos os registros da tabela "produtos" onde o id é igual a "3" 44 | 45 | ```sql 46 | select * from produtos where id = 3; 47 | ``` 48 | 49 | ### Alterando o preço do produto onde o id igual a "1" 50 | 51 | ```sql 52 | update produtos set preco = 100000 where id = 1; 53 | ``` 54 | 55 | ### Deletando o produto onde o id igual a "2" 56 | 57 | ```sql 58 | delete from produtos where id = 2; 59 | ``` 60 | 61 | ### Criando uma tabela chamada "categorias" 62 | 63 | ```sql 64 | create table if not exists categorias ( 65 | id serial primary key, 66 | nome text 67 | ); 68 | ``` 69 | 70 | ### Inserindo registros na tabela "categorias" 71 | 72 | ```sql 73 | -- Eletrônicos e Tecnologia 74 | insert into categorias (nome) values ('Eletrônicos e Tecnologia'); 75 | -- Alimentação 76 | insert into categorias (nome) values ('Alimentação'); 77 | ``` 78 | 79 | ### Listando todos os registros da tabela "categorias" 80 | 81 | ```sql 82 | select * from categorias; 83 | ``` 84 | 85 | ### Alterando a tabela "produtos" 86 | 87 | ```sql 88 | -- Adicionando coluna categoria 89 | alter table produtos add column categoria integer; 90 | -- Deletando coluna categoria 91 | alter table produtos drop column categoria; 92 | -- Criando coluna categoria_id 93 | alter table produtos add column categoria_id integer; 94 | ``` 95 | 96 | ### Criando uma chave estrangeira na tabela "produtos" vinculada a tabela "categorias" 97 | 98 | Uma chave estrangeira é um campo, que aponta para a chave primária de outra tabela gerando assim uma relação entre as duas tabelas 99 | 100 | ```sql 101 | alter table produtos add constraint fk_categoria_produto_id 102 | foreign key (categoria_id) references categorias(id); 103 | ``` 104 | 105 | ### Alterando a "categoria_id" de todos os registros da tabela "produtos" 106 | 107 | OBS: cuidado ao fazer updates e deletes sem o **where** 108 | 109 | ```sql 110 | update produtos set categoria_id = 1; 111 | ``` 112 | 113 | ### Listando a tabela "produtos" e "categorias" juntas 114 | 115 | ```sql 116 | select 117 | produtos.id, 118 | produtos.nome, 119 | produtos.preco, 120 | categorias.nome as categoria 121 | from produtos 122 | inner join categorias 123 | on categorias.id = produtos.categoria_id; 124 | ``` 125 | 126 | ![](https://dq-blog.s3.amazonaws.com/top-20-SQL-JOINs-interview-questions-and-answers/image-1.png) 127 | 128 | ## Funções 129 | 130 | ### "count" conta a quantidade de registros de uma tabela 131 | 132 | ```sql 133 | select count(*) from produtos; 134 | ``` 135 | 136 | ## "as" cria um apelido para a coluna 137 | 138 | ```sql 139 | select count(*) as quantidade_produtos from produtos; 140 | ``` 141 | 142 | ### "||" ou "concat" junta campos 143 | 144 | ```sql 145 | select nome || ' - ' || preco as descricao from produtos; 146 | --ou 147 | select concat(nome,' - ', preco) as descricao from produtos; 148 | ``` 149 | 150 | ### "avg" gera a média de uma coluna 151 | 152 | ```sql 153 | select avg(preco) from produtos; 154 | ``` 155 | 156 | ### "round" aredonda o valor da coluna 157 | 158 | ```sql 159 | select round(avg(preco)) from produtos; 160 | -- ou 161 | select round(avg(preco), 2) from produtos; 162 | -- ou 163 | select round(45.898777); 164 | ``` 165 | 166 | ### "min" pega o menor valor da coluna 167 | 168 | ```sql 169 | select min(preco) from produtos; 170 | ``` 171 | 172 | ### "max" pega o maior valor da coluna 173 | 174 | ```sql 175 | select max(preco) from produtos; 176 | ``` 177 | 178 | ### "sum" soma os valores da coluna 179 | 180 | ```sql 181 | select sum(preco) from produtos; 182 | ``` 183 | 184 | ### "::" ou "cast" converter tipo de uma coluna 185 | 186 | ```sql 187 | select preco::text from produtos; 188 | --ou 189 | select cast(preco as text) from produtos; 190 | ``` 191 | 192 | ### "now" gerar Data 193 | 194 | ```sql 195 | select now(); 196 | ``` 197 | 198 | ### "coalesce" traz o primeiro não nulo(null) 199 | 200 | ```sql 201 | select coalesce(preco) from produtos; 202 | -- ou 203 | select coalesce(null, 52, preco) from produtos; 204 | ``` 205 | 206 | ### "group by" agrupa por coluna 207 | 208 | ```sql 209 | select sum(preco) from produtos group by categoria_id; 210 | ``` 211 | 212 | ### "order by" ordena por coluna "asc" (crescente) "desc" (decrecente) 213 | 214 | ```sql 215 | select * from produtos order by preco asc; 216 | -- ou 217 | select * from produtos order by preco desc; 218 | ``` 219 | 220 | ### verificando uma coluna 221 | 222 | ```sql 223 | -- maior que 30000 224 | select * from produtos where preco > 30000; 225 | -- menor que 30000 226 | select * from produtos where preco < 30000; 227 | -- diferente que 30000 228 | select * from produtos where preco <> 30000; 229 | -- igual a 30000 230 | select * from produtos where preco = 30000; 231 | -- diferente de nulo (null) 232 | select * from produtos where preco is not null; 233 | -- limitado a 1 registro 234 | select * from produtos limit 1; 235 | -- seta quando começa a listagem (muito usado em páginação) 236 | select * from produtos limit 10 offset 0; 237 | -- pega todos os registros que possuem no nome a palavra "Samsung" 238 | select * from produtos where nome like '%Samsung%' 239 | ``` 240 | -------------------------------------------------------------------------------- /frontend/html.md: -------------------------------------------------------------------------------- 1 | # HTML 5 2 | O HTML (Hypertext Markup Language) é uma linguagem de marcação, que tem o objetivo de criar a estrutura para a página. Ela define o que é um título, o que é uma imagem, um link, um menu de navegação, etc. 3 | 4 | ### Tags 5 | Toda a estrutura da página é criada por meio de tags, elas funciona como uma etiqueta do conteúdo. 6 | 7 | **Sintaxe da tag** 8 | 9 | ```html 10 | 11 | conteúdo 12 | 13 | ``` 14 | ### Tags selfclosing 15 | As tags selfclosing são tags que não possuem conteúdo e tem a abertura e fechamento na mesma tag, normalmente essa tag é acompanhada de um atributo (falaremos disso mais para frente). 16 | 17 | ```html 18 | 19 | ``` 20 | ### Tag de comentário 21 | 22 | ```html 23 | 24 | 25 | ``` 26 | ### Tags de Título 27 | 28 | ```html 29 | 30 |

Titulo 1

31 |

Titulo 2

32 |

Titulo 3

33 |

Titulo 4

34 |
Titulo 5
35 |
Titulo 6
36 | ``` 37 | ### Tags de Texto 38 | 39 | ```html 40 | 41 |

Paragrafo

42 | texto em negrito 43 | texto em itálico 44 | ``` 45 | 46 | ### Tags de Lista 47 | 48 | ```html 49 | 50 |
    51 |
  1. Item 1
  2. 52 |
  3. Item 2
  4. 53 |
  5. Item 3
  6. 54 |
55 | ``` 56 | 57 | ```html 58 | 59 |
    60 |
  • Item 1
  • 61 |
  • Item 2
  • 62 |
  • Item 3
  • 63 |
64 | ``` 65 | ### Tag de Div 66 | 67 | ```html 68 | 69 |
70 | Conteúdo 1 71 |
72 |
73 | Conteúdo 2 74 |
75 | ``` 76 | ### Atributos 77 | O atributo fornece informações a mais sobre a tag, sendo passados diretamente na tag, um atributo é composto por chave e valor, e tem a sintaxe. 78 | 79 | ```html 80 | 81 | ``` 82 | 83 | ### Tag de Img 84 | ```html 85 | 87 | 88 | 89 | ``` 90 | 91 | ### Tag de Link 92 | 93 | ```html 94 | 95 | Clique aqui 96 | ``` 97 | 98 | ### Caminho absoluto e relativo 99 | O caminho é um determinado arquivo se encontra, seja ele uma imagem, uma página html, um vídeo e/ou outros. 100 | 101 | O caminho absoluto é o caminho baseado no caminho inteiro do seu computador. 102 | **Ex: c:/users/jess/desktop/imagem.png** 103 | 104 | Só que esse tipo de caminho pode ser ruim, pois cada computador tem sua configuração de pasta. 105 | 106 | E é aí que entra o caminho relativo, ele garante que não importa o computador sempre o arquivo sempre será achado, pois ele faz o caminho inverso, ou seja, de onde o arquivo está sendo chamado até o arquivo procurado. 107 | 108 | Ex: Se o nosso projeto tem a seguinte estrutura de pasta:** 109 | 110 | - projeto 111 | - sobre 112 | - index.html 113 | - imagens 114 | - imagem.png 115 | 116 | Digamos que quero chamar a **imagem.png** no **index.html**, então o caminho relativo ficaria assim: 117 | 118 | ```html 119 | 120 | ``` 121 | No nosso exemplo estamos saindo da pasta sobre e depois entrando na pasta imagens e pegando o arquivo imagem.png 122 | 123 | ``` 124 | ./ => para partir de uma pasta 125 | 126 | ../ => é para sair de uma pasta 127 | ``` 128 | ### Tags de Block e Inline 129 | Tags em bloco (block) são tags que ocupam o espaço todo da tela horizontalmente. 130 | Tags de linha (inline) só ocupam o espaço do conteúdo. 131 | 132 | ```html 133 | 134 |

bloco

135 | 136 | 137 | Clique aqui 138 | ``` 139 | ### Árvore HTML, alinhamento e indentação 140 | 141 | ![](https://raw.githubusercontent.com/diegoeis/tableless-static-images/master/2011/07/dom_tree.gif) 142 | 143 | O html monta a estrutura da página e as estruturas podem estar dentro de outras estruturas. Ex: 144 | 145 | ```html 146 | 147 |
    148 | 149 |
  • Item 1
  • 150 |
151 | ``` 152 | Aqui a li está dentro da ul, pois um item da lista deve estar dentro da lista. E isso acontece em vários momentos, agrupamos tags para montar a estrutura da página. 153 | 154 | ```html 155 |
156 |

Meu título

157 |

158 | meu parágrafo 159 | texto em negrito 160 |

161 |
162 | ``` 163 | Toda nova tag criada no exemplo abaixo possui um novo espaçamento com o TAB do teclado, isso cria uma **indentação** que faz com que fique mais fácil entender qual tag é a tag "PAI" e qual tag é a tag "Filho". 164 | Assim mantemos nosso código alinhado e organizado. 165 | 166 | 167 | ### Estrutura de uma página web 168 | ```html 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | Document 179 | 180 | 181 | 182 | 183 | 184 | 185 | ``` 186 | 187 | ### Tags semanticas 188 | Tags semantica são tags com nomes mais semânticos, mais fáceis de entender o que aquela tag faz. 189 | 190 | ![](https://res.cloudinary.com/practicaldev/image/fetch/s--i1DxgY4q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oi1k8dwkj1d6zt0i6aqf.png) 191 | 192 | ## Criaremos a primeira página HTML 193 | 194 | Crie uma pasta e dentro dela crie um arquivo index.html, abra o arquivo no "bloco de notas" ou em um "editor" de sua preferência, cole o código abaixo, modifique o conteúdo caso queira, salve e depois abra o arquivo novamente em um navegador. 195 | 196 | ```html 197 | 198 | 199 | 200 | 201 | 202 | Meu primeiro site 203 | 204 | 205 |
206 | 209 |
210 |
211 |
212 |
213 |

Meu título

214 |

Subtitulo

215 |

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Quos doloribus reiciendis velit ex nam.

216 |
217 |
218 |
219 |
220 |

Meu título

221 |

Subtitulo

222 |

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Quos doloribus reiciendis velit ex nam.

223 |
224 |
225 |
226 | 230 | 233 | 234 | 235 | ``` 236 | Algo importante é lembrar que o HTML cria a estrutura mais é o CSS que fornecerá as característica da estrutura, ou seja, cor, tamanho, borda, posição e afins. 237 | 238 | 239 | ### Documentações 240 | 241 | [w3school](https://www.w3schools.com/html/default.asp) 242 | 243 | [MDN](https://developer.mozilla.org/pt-BR/docs/Web/HTML) -------------------------------------------------------------------------------- /javascript/javascript.md: -------------------------------------------------------------------------------- 1 | ## Variáveis (são caixas que guardam valores) 2 | 3 | - let - o valor pode ser alterado 4 | 5 | ```js 6 | let melhorFilme = "Harry Potter"; 7 | melhorFilme = "Mentira, Jogos Vorazes"; 8 | ``` 9 | 10 | - const - o valor não pode ser alterado 11 | 12 | ```js 13 | const melhorFilme = "Jogos Vorazes"; 14 | ``` 15 | 16 | ### Tipos de variáveis 17 | 18 | - string - texto 19 | 20 | ```js 21 | const nome = "Maria"; 22 | ``` 23 | 24 | - number - números 25 | 26 | ```js 27 | const idade = 30; 28 | ``` 29 | 30 | - array - é uma caixa com divisões, onde cada parte recebe um valor 31 | 32 | ```js 33 | const frutas = ["Maça", "Banana", "L 34 | aranja"]; 35 | ``` 36 | 37 | - object - é uma mochila, onde você pode colocar vários valores agrupados 38 | 39 | ```js 40 | const pessoa = { 41 | nome: "Maria", 42 | idade: 30, 43 | gostaDeFruta: true, 44 | animaisDeEstimacao: ["gato", "cachorro"], 45 | }; 46 | ``` 47 | 48 | - boolean - sou true/verdadeiro ou false/falso 49 | 50 | ```js 51 | const maiorDe18 = true; 52 | const temCarteiraDeMotorista = false; 53 | ``` 54 | 55 | - null - vazio 56 | 57 | ```js 58 | const nome = null; // to tão vazio 59 | ``` 60 | 61 | - undefined - não definido 62 | 63 | ```js 64 | const nome; // to sem definição 65 | ``` 66 | 67 | ## Condicionais 68 | 69 | - if 70 | 71 | ```js 72 | // quando a expressão do if é verdadeira é executado o que tem dentro do bloco (dentro dos colchetes), ou seja, será exibido "é igual a banana" 73 | const fruta = "banana"; 74 | if (fruta === "banana") { 75 | console.log("é igual a banana"); 76 | } 77 | ``` 78 | 79 | - if e else 80 | 81 | ```js 82 | // quando a expressão do if é falsa é executado o bloco do else, ou seja, será exibido "é diferente de banana" 83 | const fruta = "maça"; 84 | if (fruta === "banana") { 85 | console.log("é igual a banana"); 86 | } else { 87 | console.log("é diferente de banana"); 88 | } 89 | ``` 90 | 91 | - if, else if, else 92 | 93 | ```js 94 | // quando a expressão do if é falsa é executado o else if, se a expressão do else if for verdadeira é executado o bloco do else if, ou seja, será exibido "é igual a maça" 95 | const fruta = "maça"; 96 | if (fruta === "banana") { 97 | console.log("é igual a banana"); 98 | } else if (fruta === "maça") { 99 | console.log("é igual a maça"); 100 | } else { 101 | console.log("é diferente de banana e maça"); 102 | } 103 | ``` 104 | 105 | ```js 106 | // quando da expressão do if ser falsa e a do else if ser falsa também o bloco que será executado é a do else, ou seja, será exibido "é diferente de banana e maça" 107 | const fruta = "uva"; 108 | if (fruta === "banana") { 109 | console.log("é igual a banana"); 110 | } else if (fruta === "maça") { 111 | console.log("é igual a maça"); 112 | } else { 113 | console.log("é diferente de banana e maça"); 114 | } 115 | ``` 116 | 117 | ## Laços de Repetição (uma fila infinida, que só acaba quando você manda) 118 | 119 | - for 120 | 121 | ```js 122 | const animais = ["gato", "cachorro", "papagaio"]; 123 | 124 | for (let i = 0; i < animais.length; i++) { 125 | console.log(animais[i]); 126 | } 127 | ``` 128 | 129 | - for of 130 | 131 | ```js 132 | const animais = ["gato", "cachorro", "papagaio"]; 133 | 134 | for (let item of animais) { 135 | console.log(item); 136 | } 137 | ``` 138 | 139 | - while 140 | 141 | ```js 142 | const animais = ["gato", "cachorro", "papagaio"]; 143 | 144 | let i = 0; 145 | 146 | for (i < animais.length; ) { 147 | console.log(animais[i]); 148 | i++ 149 | } 150 | ``` 151 | 152 | ## Console Vs Return 153 | 154 | - **console.log**: exibe o conteudo no console 155 | 156 | ```js 157 | console.log("olá Dev(a)!"); 158 | ``` 159 | 160 | - **return**: retorna o contéudo 161 | 162 | ```js 163 | return "olá Dev(a)!"; 164 | ``` 165 | 166 | ## Funções (é uma cafeteira - você passa algo, ela trabalha nisso e te devolve algo) 167 | 168 | - Nomeadas 169 | 170 | ```js 171 | function saudacao() { 172 | console.log("olá Dev(a)!"); 173 | } 174 | saudacao(); // to sendo chamada 175 | ``` 176 | 177 | - Anônimas 178 | 179 | ```js 180 | (function () { 181 | console.log("olá Dev(a)!"); 182 | })(); // sendo criada e chamada ao mesmo tempo (que isso bicho) 183 | ``` 184 | 185 | - Arrow Functions Nomeada 186 | 187 | ```js 188 | const saudacao = () => { 189 | console.log("olá Dev(a)!"); 190 | }; 191 | saudacao(); 192 | ``` 193 | 194 | - Arrow Functions Anônimas 195 | 196 | ```js 197 | (() => { 198 | console.log("olá Dev(a)!"); 199 | })(); // sendo criada e chamada ao mesmo tempo (que isso bicho) 200 | ``` 201 | 202 | - Parâmetros 203 | 204 | ```js 205 | function saudacao(nome) { 206 | console.log(`olá, ${nome}!`); 207 | } 208 | saudacao("Ana"); // to sendo chamada 209 | ``` 210 | 211 | - console 212 | 213 | ```js 214 | function saudacao(nome) { 215 | console.log(`olá, ${nome}!`); 216 | } 217 | saudacao("Ana"); // to sendo chamada e ta exibindo Olá, Ana! 218 | ``` 219 | 220 | - return 221 | 222 | ```js 223 | function saudacao(nome) { 224 | return `olá, ${nome}!`; 225 | } 226 | saudacao("Ana"); // to sendo chamada, mas nada está sendo exibido 227 | 228 | const mensagem = saudacao("Lisa"); 229 | console.log(mensagem); // agora sim to sendo exibida: Olá, Lisa! 230 | 231 | console.log(saudacao("Jess")); // desse jeito também to sendo exibida 232 | ``` 233 | 234 | ## Métodos De String: 235 | 236 | - indexOf() - index da primeira palavra 237 | 238 | ```js 239 | const mensagem = "Eu amo minha mãe"; 240 | const indexDeMae = mensagem.indexOf("mãe"); // index 13 241 | ``` 242 | 243 | - lastIndexOf() - index da ultima palavra 244 | 245 | ```js 246 | const mensagem = "Eu amo minha mãe. Eu amo minha mãe."; 247 | const ultimoIndexDeMae = mensagem.lastIndexOf("mãe"); // 31 248 | ``` 249 | 250 | - includes() - verifica se inclui a palavra 251 | 252 | ```js 253 | const mensagem = "Eu amo minha mãe"; 254 | const incluiMae = mensagem.includes("mãe"); // true 255 | ``` 256 | 257 | - slice() - quebra o texto 258 | 259 | ```js 260 | const mensagem = "Eu amo minha mãe."; 261 | const parteDaMensagem = mensagem.slice(0, 6); // Eu amo 262 | ``` 263 | 264 | - replace() - altera uma parte do texto 265 | 266 | ```js 267 | const mensagem = "Eu amo minha mãe."; 268 | const novaMensagem = mensagem.replace("amo", "amo muito"); // Eu amo muito minha mãe. 269 | ``` 270 | 271 | - toUpperCase() - deixa tudo em maiusculo 272 | 273 | ```js 274 | const mensagem = "Eu amo minha mãe."; 275 | const novaMensagem = mensagem.toUpperCase(); // EU AMO MINHA MÃE. 276 | ``` 277 | 278 | - toLowerCase() - deixa tudo em minusculo 279 | 280 | ```js 281 | const mensagem = "Eu amo minha mãe."; 282 | const novaMensagem = mensagem.toLowerCase(); // eu amo minha mãe. 283 | ``` 284 | 285 | - trim() - remove todos os espaços 286 | 287 | ```js 288 | const mensagem = " Eu amo minha mãe. "; 289 | const novaMensagem = mensagem.trim(); // Eu amo minha mãe. 290 | ``` 291 | 292 | - split() - quebra o texto e cria um array 293 | 294 | ```js 295 | const mensagem = "Eu amo minha mãe."; 296 | const array = mensagem.split(" "); // [ 'Eu', 'amo', 'minha', 'mãe.' ] 297 | ``` 298 | 299 | - padStart() - preenche um texto no inicio 300 | 301 | ```js 302 | const mensagem = "amo"; 303 | const novaMensagem = mensagem.padStart(20, "a"); // aaaaaaaaaaaaaaaaaamo 304 | ``` 305 | 306 | - padEnd() - preenche um texto no final 307 | 308 | ```js 309 | const mensagem = "amo"; 310 | const novaMensagem = mensagem.padEnd(20, "0"); // amoooooooooooooooooo 311 | ``` 312 | 313 | ## Métodos de Array 314 | 315 | - length - tamanho do array 316 | 317 | ```js 318 | const frutas = ["maça", "banana", "laranja"]; 319 | console.log(frutas.length); // 3 320 | ``` 321 | 322 | - push() - insere um elemento no fim do array 323 | 324 | ```js 325 | const frutas = ["maça", "banana", "laranja"]; 326 | frutas.push("uva"); 327 | console.log(frutas); // ["maça", "banana", "laranja", "uva"] 328 | ``` 329 | 330 | - pop() - remove o elemento do fim do array 331 | 332 | ```js 333 | const frutas = ["maça", "banana", "laranja"]; 334 | frutas.pop(); 335 | console.log(frutas); // ["maça", "banana"] 336 | ``` 337 | 338 | - unshift() - insere um elemento no inicio do array 339 | 340 | ```js 341 | const frutas = ["maça", "banana", "laranja"]; 342 | frutas.unshift(); 343 | console.log(frutas); // ["uva","maça", "banana", "laranja"]; 344 | ``` 345 | 346 | - shift() - remove o elemento do início do array 347 | 348 | ```js 349 | const frutas = ["maça", "banana", "laranja"]; 350 | frutas.shift(); 351 | console.log(frutas); // ["banana", "laranja"]; 352 | ``` 353 | 354 | --- 355 | 356 | - indexOf() - index (posição) da laranja 357 | 358 | ```js 359 | const frutas = ["maça", "banana", "laranja"]; 360 | console.log(frutas.indexOf("laranja")); // 2 361 | ``` 362 | 363 | - includes() - verificar se existe o elemento no array 364 | 365 | ```js 366 | const frutas = ["maça", "banana", "laranja"]; 367 | console.log(frutas.includes("laranja")); // true 368 | ``` 369 | 370 | - concat() - junta dois arrays 371 | 372 | ```js 373 | const frutasAmarelas = ["mexerica", "laranja"]; 374 | const frutasVermelhas = ["maça", "amora"]; 375 | const frutas = frutasAmarelas.concat(frutasVermelhas); 376 | console.log(frutas); // [ 'mexerica', 'laranja', 'maça', 'amora' ] 377 | ``` 378 | 379 | - splice() - altera o contéudo da lista 380 | 381 | ```js 382 | const meses = ["Jan", "Mar", "Abr", "Jun"]; 383 | meses.join(); 384 | console.log(meses); // [ 'Jan', 'Fev', 'Mar', 'Abr', 'Jun' ] 385 | ``` 386 | 387 | - join() 388 | 389 | ```js 390 | const meses = ["Jan", "Mar", "Abr", "Jun"]; 391 | console.log(meses.join()); // Jan, Mar, Abr, Jun; 392 | ``` 393 | 394 | - reverse() - inverte array 395 | 396 | ```js 397 | const meses = ["Jan", "Mar", "Abr", "Jun"]; 398 | console.log(meses.reverse()); // [ 'Jun', 'Abr', 'Mar', 'Jan' ] 399 | ``` 400 | 401 | - slice() - quebra o array 402 | 403 | ```js 404 | const meses = ["Jan", "Mar", "Abr", "Jun"]; 405 | console.log(meses.slice(1, 2)); // [ 'Mar' ] 406 | ``` 407 | 408 | - toString() - transforma em string 409 | 410 | ```js 411 | const meses = ["Jan", "Mar", "Abr", "Jun"]; 412 | console.log(meses.toString()); // Jan,Mar,Abr,Jun 413 | ``` 414 | 415 | --- 416 | 417 | - every() - verifica se todos os elementos passam nos testes da função fornecida 418 | 419 | ```js 420 | const animais = ["gato", "pato", "cachorro"]; 421 | console.log(animais.every((item) => item == "gato")); // false 422 | ``` 423 | 424 | - some() - verifica se ao menos um dos elementos passam nos testes da função fornecida 425 | 426 | ```js 427 | const animais = ["gato", "pato", "cachorro"]; 428 | console.log(animais.some((item) => item == "gato")); // true 429 | ``` 430 | 431 | - find() - traz o primeiro elemento que passam nos testes da função fornecida 432 | 433 | ```js 434 | const animais = ["gato", "pato", "cachorro"]; 435 | console.log(animais.find((item) => item !== "gato")); // pato 436 | ``` 437 | 438 | - findIndex() - traz o index (posição) do primeiro elemento que passam nos testes da função fornecida 439 | 440 | ```js 441 | const animais = ["gato", "pato", "cachorro"]; 442 | console.log(animais.findIndex((item) => item !== "gato")); // 1 443 | ``` 444 | 445 | - filter() - traz um novo array com os elementos que passam nos testes da função fornecida 446 | 447 | ```js 448 | const numeros = [1, 2, 3, 4, 5]; 449 | console.log(numeros.filter((item) => item !== 2)); // [ 1, 3, 4, 5 ] 450 | ``` 451 | 452 | - map() - array com a mesma qtd de elementos do array original 453 | 454 | ```js 455 | const numeros = [1, 2, 3, 4, 5]; 456 | console.log(numeros.map((item) => item * 2)); // [ 2, 4, 6, 8, 10 ] 457 | ``` 458 | 459 | --- 460 | 461 | - sort() - ordena os elementos 462 | 463 | ```js 464 | const numeros = [8, 20, 3, 4, 9]; 465 | console.log(numeros.sort((a, b) => a - b)); // [ 3, 4, 8, 9, 20 ] 466 | 467 | console.log(numeros.sort((a, b) => b - a)); // [ 20, 9, 8, 4, 3 ] 468 | ``` 469 | 470 | - reduce() - executa uma função para reduzir um array em um único valor 471 | 472 | ```js 473 | const numeros = [8, 20, 3, 4, 9]; 474 | console.log(numeros.reduce((acc, x) => (acc += x), 0)); // 44 475 | ``` 476 | --------------------------------------------------------------------------------