Skip to content

Commit

Permalink
docs: create dojo1s document
Browse files Browse the repository at this point in the history
  • Loading branch information
mateusmaiamaia committed Dec 9, 2024
1 parent 8e4022e commit 8c6e6fe
Show file tree
Hide file tree
Showing 3 changed files with 294 additions and 3 deletions.
72 changes: 71 additions & 1 deletion docs/dojos/docker.md
Original file line number Diff line number Diff line change
@@ -1 +1,71 @@
# Docker / Docker Compose
# Guia Completo de Docker e Docker-Compose

## Versão

| **Título** | **Alterações Feitas** | **Autor** | **Data de Hoje** |
|-------------------|-----------------------------------------------| -----------| --------------- |
| Dojo Docker | Subindo documento versão 1 | Mateus Maia | 09 de dezembro de 2024 |

## Docker

### O que é Docker?
O Docker é uma plataforma de software que permite criar e gerenciar contêineres: ambientes isolados e portáteis para rodar aplicações. Isso facilita o desenvolvimento, a distribuição e a execução de aplicações em diferentes ambientes.

### Guia de Instalação
* **Linux:**
```bash
# Instalação Ubuntu/Debian
sudo apt-get update
sudo apt-get install docker.io

# Instalação CentOS/Fedora
sudo yum install docker-ce docker-ce-cli containerd.io
```
* **macOS:**
* Instalar o Docker Desktop para Mac através do site oficial.
* **Windows:**
* Instalar o Docker Desktop para Windows através do site oficial.

### Dockerfile
Um Dockerfile é um arquivo de texto que contém todas as instruções para criar uma imagem Docker. Ele define a base da imagem, os comandos a serem executados e os arquivos que serão copiados para a imagem.
* **Exemplo básico:**
```dockerfile
FROM ubuntu:latest
RUN apt-get update && apt-get install -y nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
```

### Comandos Básicos
* **`docker run`:** Executa um container a partir de uma imagem.
* **`docker ps`:** Lista os containers em execução.
* **`docker images`:** Lista as imagens disponíveis localmente.
* **`docker stop`:** Para um container em execução.
* **`docker rm`:** Remove um container.
* **`docker build`:** Cria uma imagem a partir de um Dockerfile.

## Docker-Compose

### O que é Docker-Compose?
O Docker Compose é uma ferramenta para definir e executar aplicações Docker multi-container usando um arquivo YAML. Ele facilita a criação de ambientes complexos com múltiplos serviços.

### Guia de Instalação
* **Instalação:**
```bash
sudo curl -L "[https://github.com/docker/compose/releases/download/1.29.2/docker-compose-linux-x86_64](https://github.com/docker/compose/releases/download/1.29.2/docker-compose-linux-x86_64)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```

### Comandos Básicos
* **`docker-compose up`:** Inicia os serviços definidos no arquivo docker-compose.yml.
* **`docker-compose down`:** Para e remove os containers e redes criados.
* **`docker-compose build`:** Reconstrói as imagens dos serviços.

**docker-compose.yml:**
```yaml
version: '3.7'
services:
web:
build: .
ports:
- "5000:5000"
119 changes: 118 additions & 1 deletion docs/dojos/git-github.md
Original file line number Diff line number Diff line change
@@ -1 +1,118 @@
# Git / Github
# Dojô Git / GitHub

# Versão

| **Título** | **Alterações Feitas** | **Autor** | **Data de Hoje** |
|-------------------|-----------------------------------------------| -----------| --------------- |
| Dojo Git/GitFlow | Subindo documento versão 1 | Mateus Maia | 09 de dezembro de 2024 |

## Introdução

### Git
Git é um **sistema de controle de versão distribuído** usado para rastrear alterações no código fonte durante o desenvolvimento de software.
- Permite que vários desenvolvedores trabalhem simultaneamente no mesmo projeto
- Audita as alterações feitas em arquivos específicos ao longo do tempo.
- Permite que os desenvolvedores revertam para versões anteriores, criem novas funcionalidades em paralelo e colaborem de maneira eficaz.

### GitHub:
GitHub é uma **plataforma de hospedagem** baseada na web para projetos Git, fornecendo uma interface visual para o controle de versão e colaboração em equipe.

Ele permite que os desenvolvedores hospedem seus repositórios Git remotamente na nuvem e fornece recursos adicionais, como rastreamento de problemas, controle de acesso, integração contínua e muito mais.

## Conceitos chave

### Commit:
Um commit no Git é uma operação na qual as alterações feitas em arquivos específicos são salvas no repositório **local** Git.
- Cada commit é acompanhado de uma mensagem que descreve as alterações feitas, fornecendo contexto sobre o que foi modificado.
- Commits ajudam a rastrear e documentar o progresso do desenvolvimento ao longo do tempo.

### Branch:
Uma branch no Git é uma ramificação independente do código fonte principal (geralmente chamado de branch "master" ou "main").

As branches permitem que os desenvolvedores trabalhem em novas funcionalidades ou correções de bugs sem interferir no código principal.

Depois que as alterações em uma branch são concluídas e testadas, elas podem ser mescladas de volta a branch principal por meio de um processo chamado de "merge".

### Merge:
Merge é o processo de combinar as alterações de uma branch em outra.

Por exemplo, você pode ter uma branch de desenvolvimento onde as novas funcionalidades são adicionadas e, quando estiverem prontas, você pode mesclá-las de volta para a branch principal (master ou main).

### Pull Request (Pedido de Pull):
Um pull request é uma solicitação feita por um colaborador de um repositório Git para incorporar suas alterações em uma branch específica desse repositório.

Geralmente, os pull requests são usados em projetos colaborativos para revisão de código e integração de novas funcionalidades ou correções de bugs. Os mantenedores do projeto podem revisar as alterações propostas, fazer comentários e, eventualmente, mesclar o pull request se estiverem satisfeitos com as alterações.

## Tutorial de COntrinuição Git

Dojo de git do grupo do Livro Livre da disciplina de EPS.

## Criando a sua chave ssh

### 1. Gerando a sua chave SSH

No seu terminal use o comando:

``` ssh-keygen -t rsa -b 4096 -C "[email protected]"```

### 2. Adicionando a sua chave SSH RSA ao ssh-agent

Abra um novo terminal e utilize esse comando:

```eval "$(ssh-agent -s)"```

Em seguida esse comando:

```ssh-add ~/.ssh/id_rsa```

### 3. Adicionar a sua chave SSH ao GitHub

Em um terminal copie a chave SSH pública para a área de transferência, usando esse comando:

```cat .ssh/id_rsa.pub```

No GitHUb acesse
- Acesse Settings > SSH and GPG keys.
- Clique em New SSH Key.
- Cole a chave pública copiada no campo e salve.

### 4. Testar a conexão SSH

Para verificar se a chave SSH está funcionando, execute:

``` ssh -T [email protected] ```

## Passos a serem executados

### 1. Clone
Clonem esse repositório para suas máquinas utilizando o ssh.

### 2. Branches

De acordo com nossa política de contribuição, devemos seguir o padrão estipulado de x_nome_da_issue para feature branches e hotfix_x_nome_da_issue para hotfix branches.

#### 2.1 Crie branch de feature
```$ git checkout -b x_nome_da_issue_seu_nome```

### 3. Stage/Add
1. Crie um arquivo .js com nome `feature.js` com o conteúdo do [feature.txt](feature.txt);
2. Salve suas mudanças;
3. Dê "stage" em suas mudanças. ```$ git add feature.js```

### 4. Commit
Commite suas mudanças para sua branch atual seguindo nossa política de commit.
#### 4.1 Commite suas mudanças.
```$ git commit -m "feat: create javascript feature"```

### 5. Push
Envie para o repositório de origem as mudanças feitas.
```$ git push origin x_nome_da_issue_seu_nome```

### 6. Rebase/Merge
1. Edite o arquivo [dojo.py](dojo.py) conforme as instruções;
2. Atualize sua branch com a `main` usando do rebase; ```$ git pull --rebase origin main```
3. Siga os passos conforme as instruções ministradas e sua linha de comando;
4. Atualize a sua branch com as novas mudanças. ```$ git push -f origin x_nome_da_issue_seu_nome```

### 7. Abra um Pull Request para a Main
Siga as instruções dadas em [política de contribuição](https://github.com/fga-eps-mds/EPS-2020-2-G1/blob/main/CONTRIBUTING.md) e seguindo nosso [pull request template](https://github.com/fga-eps-mds/EPS-2020-2-G1/blob/main/.github/pull_request_template.md).
106 changes: 105 additions & 1 deletion docs/dojos/nestjs.md
Original file line number Diff line number Diff line change
@@ -1 +1,105 @@
# NestJS
# Dojo NestJS: Construindo Backends Escaláveis e Eficientes em TypeScript

## Versão

| **Título** | **Alterações Feitas** | **Autor** | **Data de Hoje** |
|-------------------|-----------------------------------------------| -----------| --------------- |
| Dojo Rest.js | Subindo documento versão 1 | Mateus Maia | 09 de dezembro de 2024 |


## Introdução ao NestJS

* **O que é NestJS?**
Um framework Node.js progressivo que utiliza TypeScript, oferecendo uma estrutura robusta para a construção de aplicações back-end escaláveis e eficientes.
* **Por que usar NestJS?**
* **TypeScript:** Tipagem estática, melhorando a qualidade do código.
* **Modularidade:** Organização em módulos, promovendo reutilização.
* **Dependecy Injection:** Injeção de dependências automática.
* **Comunidade:** Grande comunidade e suporte.
* **Performance:** Otimizado para alto desempenho.

## Instalando e Configurando o Ambiente

* **Instalação:**
```bash
npm install -g @nestjs/cli
nest new my-nest-app
cd my-nest-app
npm run start
```
* **Editor de código:** Visual Studio Code, Sublime Text, Atom.
* **Extensões:** TypeScript, ESLint, Prettier.

## Conceitos Fundamentais

* **Módulos:** Contêm controladores, serviços, provedores.
* **Controladores:** Exportam rotas HTTP.
* **Serviços:** Contêm a lógica de negócio.
* **Provedores:** Fornecem serviços para outras partes da aplicação.
* **Decoradores:** Adicionam metadados às classes.
* **Pipes:** Validam e transformam dados de entrada.
* **Guards:** Protegem rotas.
* **Interceptors:** Interceptam requisições e respostas.

## Criando sua Primeira API

* **Criando um controlador:**
```typescript
import { Controller, Get } from '@nestjs/common';
@Controller()
export class AppController {
@Get()
getHello(): string {
return 'Hello World!';
}
}
```
* **Testando a API:**
```bash
curl http://localhost:3000
```
## Trabalhando com Banco de Dados
* **TypeORM:** ORM popular para NestJS.
* **Mongoose:** Outro ORM popular, especialmente para MongoDB.
* **Criando entidades:**
```typescript
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
firstName: string;
}
```
## Testando sua Aplicação
* **Jest:** Framework de testes JavaScript.
* **Supertest:** Biblioteca para testar APIs HTTP.
## Tópicos Avançados
* **WebSockets:** Comunicação em tempo real.
* **GraphQL:** Linguagem de consulta para APIs.
* **Microserviços:** Construindo aplicações distribuídas.
* **Cloud Computing:** Deploy em plataformas como AWS, GCP e Azure.
## Projetos Práticos
* **API REST para um blog:** Crie posts, comentários, usuários.
* **Aplicativo de chat em tempo real:** Utilize WebSockets.
* **E-commerce:** Carrinho de compras, pagamentos, produtos.
## Recursos Adicionais
* **Documentação Oficial:** https://nestjs.com/
* **TypeORM:** https://typeorm.io/
* **Mongoose:** https://mongoosejs.com/

0 comments on commit 8c6e6fe

Please sign in to comment.