docs: separar material de TP em docs/tp/

documentation/ fica neutra (produto); visão TP, tutorial Ping e
checklists de entrega movem para docs/tp/ sem link reverso.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Gabriel Felipe Souza SantosandCursor committed 2026-10-27 21:37:03 -03:00
1 parent de65f3063f
commit aa75cebaaa
19 files changed
+80 -62

No files matched your search

+1 -1
View File
@@ -2,7 +2,7 @@
Ferramenta **P2P** para práticas de Redes de Computadores: núcleo em Java com arquitetura de **plugins** (conversa na rede e compartilhamento de tela).
**Documentação:** [docs/README.md](docs/README.md) (trilhas aluno, redes e dev) · **Quickstart:** [docs/documentation/00_quickstart.md](docs/documentation/00_quickstart.md) · **Convenções:** [docs/documentation/00_convencoes.md](docs/documentation/00_convencoes.md)
**Documentação técnica:** [docs/README.md](docs/README.md) · **Quickstart:** [docs/documentation/00_quickstart.md](docs/documentation/00_quickstart.md) · **Convenções:** [docs/documentation/00_convencoes.md](docs/documentation/00_convencoes.md)
---
+1 -2
View File
@@ -16,9 +16,8 @@ Convenções editoriais: [documentation/00_convencoes.md](documentation/00_conve
| Leitor | Trilha |
| --- | --- |
| **Aluno (TP)** | [00_quickstart](documentation/00_quickstart.md) → [09_sistema_de_plugins](documentation/09_sistema_de_plugins.md) → [10_tutorial_plugin](documentation/10_tutorial_plugin.md) → [17_tutorial_ping_aula](documentation/17_tutorial_ping_aula.md) → [11_plugins_referencia](documentation/11_plugins_referencia.md) |
| **Primeiro uso** | [00_quickstart](documentation/00_quickstart.md) → [09_sistema_de_plugins](documentation/09_sistema_de_plugins.md) → [10_tutorial_plugin](documentation/10_tutorial_plugin.md) → [11_plugins_referencia](documentation/11_plugins_referencia.md) |
| **Redes (conceito + código)** | [16_fundamentacao_redes](documentation/16_fundamentacao_redes.md) → [05](documentation/05_udp_multicast.md)–[08](documentation/08_heartbeat_e_presenca.md) → [appendix_portas_e_multicast](documentation/appendix_portas_e_multicast.md) |
| **Monitor / docência** | [01_visao_disciplina_e_tp](documentation/01_visao_disciplina_e_tp.md) → [15_testes_e_gate](documentation/15_testes_e_gate.md) |
| **Desenvolvedor núcleo** | [13_guia_desenvolvimento](documentation/13_guia_desenvolvimento.md) → [14_arquitetura_e_manutencao](documentation/14_arquitetura_e_manutencao.md) → [04_inicializacao_e_gui](documentation/04_inicializacao_e_gui.md) |
## Manutenção rápida
+1 -1
View File
@@ -19,7 +19,7 @@ Não descreva funcionalidade futura como se já existisse.
## Código nos exemplos
- Trechos de tutorial são **ilustrativos** quando indicado; o aluno completa o plugin (ver [17_tutorial_ping_aula.md](17_tutorial_ping_aula.md)).
- Trechos de tutorial são **ilustrativos** quando indicado; complete o plugin conforme [10_tutorial_plugin.md](10_tutorial_plugin.md).
- APIs citadas devem existir no núcleo atual (`PluginWorkspace`, `createPlugin(ConnectionManager, PluginWorkspace)`).
## Diagramas
@@ -7,8 +7,7 @@ pitiupi/ # clone (este repositório)
├── pitiupi/ # núcleo P2P (executável)
├── plugins/
│ ├── chat/ # chat unificado (UDP/multicast/TCP + TCP privado)
│ ├── screencast/ # compartilhamento de tela
│ └── ping/ # exercício de aula (só doc)
│ └── screencast/ # compartilhamento de tela
└── docs/
```
@@ -25,4 +24,4 @@ pitiupi/ # clone (este repositório)
| `plugins/chat` | `ant jar` | `dist/pitiupi.chat.jar` | `pitiupi.chat.plugin.ChatPlugin` |
| `plugins/screencast` | `ant jar` | `dist/pitiupi.screenCast.jar` | `pitiupi.screenCast.plugin.ScreenCastPlugin` |
Ver [10_tutorial_plugin.md](10_tutorial_plugin.md) e [17_tutorial_ping_aula.md](17_tutorial_ping_aula.md).
Novo módulo: [10_tutorial_plugin.md](10_tutorial_plugin.md).
+2 -3
View File
@@ -10,9 +10,8 @@ plugins. A comunicação de rede utiliza dois protocolos de transporte: UDP,
empregado principalmente na descoberta e comunicação multicast entre as
instâncias, e TCP, utilizado para comunicação direta e persistente entre peers.
O projeto foi desenvolvido como suporte às práticas da disciplina de Redes de
Computadores, servindo também como base para experimentação de aplicações
distribuídas e desenvolvimento de projetos acadêmicos.
O projeto serve como base para experimentação de aplicações distribuídas e
desenvolvimento de extensões via plugins.
Índice: [README.md](README.md).
+2 -2
View File
@@ -51,7 +51,7 @@ MeusPlugins.plugins.NomeDaClasse
Para serem carregados, os plugins devem estar empacotados como arquivos JAR
e colocados no diretório plugins da aplicação.
O catálogo de build (`plugins.registry.json`) cobre só **chat** e **screencast** no CI. Exercícios (ex. [ping](17_tutorial_ping_aula.md)) ficam fora do repositório — o aluno instala o JAR localmente após `ant jar`.
O catálogo de build (`plugins.registry.json`) cobre **chat** e **screencast** no gate de CI. Outros módulos podem ser buildados localmente e instalados via JAR em `PITIUPI_HOME/plugins` sem entrar no catálogo.
### Carregamento de plugins
@@ -82,7 +82,7 @@ Na `MainShellFrame`, `createPlugin(ConnectionManager, PluginWorkspace)` registra
Em abas de **recebimento** (ex. screencast `view:`), `PluginRoutingPanel.bindReceiveSession` deixa IP e forma de envio somente leitura, refletindo o que o remetente usou.
## Segurança e plugins externos (aula)
## Segurança e plugins de terceiros
- Instale apenas JARs de fontes confiáveis (`PITIUPI_HOME/plugins` ou aba Configurações).
- O núcleo desserializa mensagens de rede com classloader por plugin; mensagens malformadas devem ser ignoradas, mas **não** há sandbox — um JAR malicioso tem o mesmo poder de um programa local.
+3 -4
View File
@@ -1,6 +1,6 @@
# Tutorial — criar um plugin
Complementa [09_sistema_de_plugins.md](09_sistema_de_plugins.md). Exercício guiado completo: [17_tutorial_ping_aula.md](17_tutorial_ping_aula.md). Use `plugins/chat` como **modelo de estrutura** (Ant, SPI, painel).
Complementa [09_sistema_de_plugins.md](09_sistema_de_plugins.md). Use `plugins/chat` como **modelo de estrutura** (Ant, SPI, painel).
Os exemplos abaixo são **parciais** — você completa métodos, UI e testes.
@@ -90,9 +90,9 @@ pacote.MeuPlugin
Confirme com `jar tf dist/seu.jar | grep META-INF/services`.
## 5. Catálogo (opcional para TP)
## 5. Catálogo (opcional)
Para build com `./scripts/pitiupi.sh`, adicione entrada em [`plugins.registry.json`](../../plugins.registry.json). Exercícios locais podem instalar só o JAR pela aba **Configurações**.
Para build com `./scripts/pitiupi.sh`, adicione entrada em [`plugins.registry.json`](../../plugins.registry.json). Módulos só locais podem instalar o JAR pela aba **Configurações** sem entrar no catálogo.
## 6. Build e instalação
@@ -119,5 +119,4 @@ cd plugins/meuPlugin && ant jar
## Próximos passos
- [17_tutorial_ping_aula.md](17_tutorial_ping_aula.md) — exercício Ping (RTT, UDP)
- [11_plugins_referencia.md](11_plugins_referencia.md) — chat e screencast
+3 -8
View File
@@ -46,18 +46,13 @@ Código de entrada: `plugins/screencast/src/pitiupi/screenCast/plugin/ScreenCast
**Limitação:** largura de banda e MTU — frames grandes podem sofrer perda em UDP; adequado para demonstração, não para produção.
## Exercício Ping
## Limitações (não são bugs)
Material em [17_tutorial_ping_aula.md](17_tutorial_ping_aula.md) e pasta `plugins/ping/` (sem código/JAR no repositório). Não entra no `plugins.registry.json` nem no gate CI.
## Limitações didáticas (não são bugs)
Os plugins de referência são **exemplos de sala de aula**, não produtos completos:
Os plugins de referência são **exemplos de demonstração**, não produtos completos:
| Plugin | Inclui | Não inclui (de propósito) |
| --- | --- | --- |
| **chat** | texto, sala geral, unicast/multicast/TCP, TCP privado básico | imagens, moderação, histórico persistente, criptografia |
| **screencast** | stream read-only, avisos de sessão | controle remoto do mouse/teclado, áudio |
| **ping** (exercício do aluno) | chrome de sessão v1 (`PluginRoutingPanel`, abas ↑/↓), RTT, UDP apenas | TCP privado, ICMP do SO, gráficos, SLA |
Para evoluir: copie o padrão (`Plugin` + mensagens + painel na aba) e acrescente features no **seu** JAR — sem inflar o núcleo.
Para evoluir: copie o padrão (`Plugin` + mensagens + painel na aba) e acrescente features no seu JAR — sem inflar o núcleo. Ver [10_tutorial_plugin.md](10_tutorial_plugin.md).
@@ -13,7 +13,7 @@ Esta documentação descreve a ferramenta Pitiupi neste repositório: build, red
| Tarefa | Ler primeiro |
| --- | --- |
| Novo plugin (aluno) | [10_tutorial_plugin.md](10_tutorial_plugin.md), [11_plugins_referencia.md](11_plugins_referencia.md) |
| Novo plugin | [10_tutorial_plugin.md](10_tutorial_plugin.md), [11_plugins_referencia.md](11_plugins_referencia.md) |
| Bug UDP / multicast | [05_udp_multicast.md](05_udp_multicast.md), [appendix_portas_e_multicast.md](appendix_portas_e_multicast.md) |
| Bug TCP / conexão | [06_tcp_conexoes.md](06_tcp_conexoes.md) |
| Presença / lista de usuários | [08_heartbeat_e_presenca.md](08_heartbeat_e_presenca.md) |
-8
View File
@@ -50,14 +50,6 @@ Mesma **porta** em ambos (ex. 5000), **mesmos JARs** em `~/pitiupi/plugins` em c
- [ ] Presença e linha **Todos**
- [ ] Troca de mensagens no chat (multicast e, se possível, unicast/TCP)
- [ ] Compartilhamento de tela entre os dois (ambiente com captura de tela funcional — no WSL a captura nativa pode falhar)
- [ ] Plugin Ping do aluno (tutorial [17_tutorial_ping_aula.md](17_tutorial_ping_aula.md)) medindo RTT — recomendado antes da entrega final
## Checklist plugin de aluno
- [ ] JAR em `PITIUPI_HOME/plugins` + SPI correto
- [ ] README do módulo com build e formato das mensagens
- [ ] UI na aba (`PluginWorkspace`), sem `JFrame` principal
- [ ] Demonstração mínima professor ↔ aluno ou aluno ↔ aluno
## Melhorias futuras
+1 -1
View File
@@ -50,7 +50,7 @@ Doc: [09_sistema_de_plugins.md](09_sistema_de_plugins.md).
| Situação | Transporte típico | Motivo |
| --- | --- | --- |
| Lista de usuários / heartbeat | UDP multicast | Todos os peers sem conexão prévia |
| Sala geral (chat, ping broadcast) | UDP multicast ou cópias unicast/TCP conforme combo | Didático: aluno vê diferença na UI |
| Sala geral (chat, broadcast) | UDP multicast ou cópias unicast/TCP conforme combo | Escolha explícita na UI do plugin |
| Mensagem para um IP | UDP unicast ou TCP | Destino explícito |
| Fluxo contínuo (tela, TCP privado chat) | TCP | Fluxo e framing no núcleo |
+5 -5
View File
@@ -6,10 +6,10 @@
| Área | Arquivos |
| --- | --- |
| **Início** | [00_quickstart](00_quickstart.md), [01_visao_disciplina_e_tp](01_visao_disciplina_e_tp.md), [02_modulos](02_modulos_do_repositorio.md), [03_build](03_build_ant_netbeans.md) |
| **Início** | [00_quickstart](00_quickstart.md), [02_modulos](02_modulos_do_repositorio.md), [03_build](03_build_ant_netbeans.md) |
| **Arquitetura e GUI** | [04_inicializacao_e_gui](04_inicializacao_e_gui.md), [13_guia_desenvolvimento](13_guia_desenvolvimento.md), [14_arquitetura_e_manutencao](14_arquitetura_e_manutencao.md) |
| **Rede** | [05_udp_multicast](05_udp_multicast.md), [06_tcp_conexoes](06_tcp_conexoes.md), [07_mensagens](07_mensagens_e_serializacao.md), [08_heartbeat](08_heartbeat_e_presenca.md), [16_fundamentacao_redes](16_fundamentacao_redes.md), [appendix_portas_e_multicast](appendix_portas_e_multicast.md) |
| **Plugins** | [09_sistema_de_plugins](09_sistema_de_plugins.md), [10_tutorial_plugin](10_tutorial_plugin.md), [17_tutorial_ping_aula](17_tutorial_ping_aula.md), [11_plugins_referencia](11_plugins_referencia.md), [12_transporte_e_peer_actions](12_menus_unicast_multicast.md) |
| **Plugins** | [09_sistema_de_plugins](09_sistema_de_plugins.md), [10_tutorial_plugin](10_tutorial_plugin.md), [11_plugins_referencia](11_plugins_referencia.md), [12_transporte_e_peer_actions](12_menus_unicast_multicast.md) |
| **Qualidade** | [15_testes_e_gate](15_testes_e_gate.md), [engineering_backlog](engineering_backlog.md) |
## Ordem linear (referência)
@@ -17,10 +17,10 @@
| # | Arquivo | Conteúdo |
| --- | --- | --- |
| 0 | [00_quickstart.md](00_quickstart.md) | Build, plugins, duas instâncias |
| 1–3 | 01–03 | Disciplina, módulos, Ant |
| 2–3 | 02–03 | Módulos, Ant |
| 4 | [04_inicializacao_e_gui.md](04_inicializacao_e_gui.md) | Boot, `MainShellFrame`, shell Swing |
| 5–8 | 05–08 | UDP, TCP, mensagens, presença |
| 9–12 | 09–12 | Plugins, tutoriais, transporte na UI |
| 9–12 | 09–12 | Plugins, tutorial genérico, transporte na UI |
| 13–15 | 13–15 | Dev, manutenção, testes |
| 16–17 | 16–17 | Fundamentação redes, exercício Ping |
| 16 | [16_fundamentacao_redes.md](16_fundamentacao_redes.md) | Fundamentação redes ↔ código |
| — | [appendix_portas_e_multicast.md](appendix_portas_e_multicast.md) | Portas, Wi‑Fi, WSL |
@@ -11,7 +11,7 @@
- Grupo: **`224.0.0.3`** (fixo no código do núcleo).
- Buffer UDP: **256000** bytes (configuração em `SocketUDP`).
Todos os peers na mesma LAN devem usar a **mesma porta** para participar do mesmo “grupo lógico” da aula (portas diferentes = grupos isolados).
Todos os peers na mesma LAN devem usar a **mesma porta** para participar do mesmo grupo lógico de peers (portas diferentes = grupos isolados).
## Mesmo computador
@@ -40,7 +40,7 @@ Ao abrir conversa pela lista de presença, o campo de destino usa **`PeerIpv4`**
## Checklist — dois PCs na mesma Wi‑Fi
1. **Mesma porta no login** (ex.: `5000` nos dois). Portas diferentes isolam a sala.
2. **Configurações → Sua conexão:** IPs na mesma sub-rede (ex. ambos `192.168.0.x` ou `192.168.1.x`). Se um for `172.x` (WSL/Docker) e outro `192.168.x`, o multicast da aula não cruza.
2. **Configurações → Sua conexão:** IPs na mesma sub-rede (ex. ambos `192.168.0.x` ou `192.168.1.x`). Se um for `172.x` (WSL/Docker) e outro `192.168.x`, o multicast entre esses hosts não cruza.
3. **Firewall:** liberar **UDP entrada e saída** na porta do login (Windows Defender / `ufw`).
4. **Roteador:** desativar *isolamento de clientes* / *AP isolation* / Wi‑Fi de visitantes.
5. Aguardar até **~15 s** após abrir os dois apps (heartbeat a cada 5 s).
+1 -1
View File
@@ -1,6 +1,6 @@
# Referências — Pitiupi
Bibliografia e notas curtas para apoiar a disciplina de Redes de Computadores. **Fonte única** para citações longas — capítulos em `documentation/` linkam aqui em vez de repetir bibliografia.
Bibliografia e notas curtas para apoiar o estudo de Redes de Computadores. **Fonte única** para citações longas — capítulos em `documentation/` linkam aqui em vez de repetir bibliografia.
**Sugestões de livro-texto:** Kurose & Ross — *Redes de Computadores e a Internet*; Tanenbaum — *Redes de Computadores*; Peterson & Davie — *Redes de Computadores*.
@@ -29,7 +29,7 @@ Exemplos de tema: chat temático, tabuleiro (xadrez/damas), compartilhamento de
| `plugins/screencast` | Payload maior / streaming de imagem |
| `plugins/chat` | Multicast, unicast, TCP e canal TCP privado |
Detalhes: [11_plugins_referencia.md](11_plugins_referencia.md).
Detalhes: [11_plugins_referencia.md](../documentation/11_plugins_referencia.md).
## Critérios genéricos (ajustar na disciplina)
@@ -42,6 +42,6 @@ Detalhes: [11_plugins_referencia.md](11_plugins_referencia.md).
## Para monitores
- Roteiro de build: [00_quickstart.md](00_quickstart.md).
- Checklist de entrega: [15_testes_e_gate.md](15_testes_e_gate.md).
- Fundamentação para dúvidas de alunos: [16_fundamentacao_redes.md](16_fundamentacao_redes.md).
- Roteiro de build: [00_quickstart.md](../documentation/00_quickstart.md).
- Checklist de entrega: [03_checklist_entrega.md](03_checklist_entrega.md).
- Fundamentação para dúvidas de alunos: [16_fundamentacao_redes.md](../documentation/16_fundamentacao_redes.md).
@@ -4,7 +4,7 @@ Exercício para montar o plugin **mais simples** do Pitiupi: medir **RTT** (temp
A solução completa **não** entra no repositório público: o aluno desenvolve em `plugins/ping/` na máquina local (fora do gate CI). Este tutorial traz escopo, trechos e verificações — você implementa o restante.
Índice: [README.md](README.md) · Plugins de referência: [11_plugins_referencia.md](11_plugins_referencia.md).
Índice TP: [README.md](README.md) · Plugins de referência: [11_plugins_referencia.md](../documentation/11_plugins_referencia.md).
## O que você vai aprender
@@ -28,7 +28,7 @@ A solução completa **não** entra no repositório público: o aluno desenvolve
## Pré-requisitos
1. Pitiupi abrindo com login (nome + porta).
2. [`09_sistema_de_plugins.md`](09_sistema_de_plugins.md).
2. [`09_sistema_de_plugins.md`](../documentation/09_sistema_de_plugins.md).
3. JDK 17 + Ant.
4. Núcleo compilado: `pitiupi/dist/pitiupi.jar`.
@@ -142,7 +142,7 @@ O chat usa a mesma ideia de abas de sessão, mas adiciona roteamento TCP privado
| `ClassCastException` | Versões diferentes do JAR entre PCs |
| Aba não abre | Esqueceu `bindShellWorkspaceContent` ou peer action só abre UI (envio é no painel) |
Mais geral: [10_tutorial_plugin.md](10_tutorial_plugin.md#problemas-comuns).
Mais geral: [10_tutorial_plugin.md](../documentation/10_tutorial_plugin.md#problemas-comuns).
## Checklist do aluno
+23
View File
@@ -0,0 +1,23 @@
# Checklist de entrega — trabalho prático
Complementa os testes do produto em [15_testes_e_gate.md](../documentation/15_testes_e_gate.md).
## Rede em sala (dois PCs, mesma Wi‑Fi)
Mesma **porta** em ambos (ex. 5000), **mesmos JARs** de referência em `~/pitiupi/plugins` em cada máquina:
- [ ] Presença e linha **Todos**
- [ ] Troca de mensagens no chat (multicast e, se possível, unicast/TCP)
- [ ] Compartilhamento de tela entre os dois (ambiente com captura de tela funcional — no WSL a captura nativa pode falhar)
- [ ] Plugin **Ping** ( [02_tutorial_ping_aula.md](02_tutorial_ping_aula.md) ) medindo RTT — recomendado antes da entrega final
## Plugin entregue (seu trabalho)
- [ ] JAR em `PITIUPI_HOME/plugins` + SPI correto
- [ ] README do módulo com build e formato das mensagens
- [ ] UI na aba (`PluginWorkspace`), sem `JFrame` principal
- [ ] Demonstração mínima professor ↔ aluno ou aluno ↔ aluno
## Ping (exercício de sala)
- [ ] Concluído conforme checklist em [02_tutorial_ping_aula.md](02_tutorial_ping_aula.md)
+15
View File
@@ -0,0 +1,15 @@
# Trabalho prático — Redes de Computadores
Material da disciplina: visão do TP, exercício **Ping** em sala e checklists de entrega.
Para **uso do Pitiupi, protocolos e desenvolvimento de plugins em geral**, use a documentação técnica em [documentation/](../documentation/README.md).
## Ordem sugerida
| # | Documento |
| --- | --- |
| 1 | [01_visao_disciplina_e_tp.md](01_visao_disciplina_e_tp.md) |
| 2 | [02_tutorial_ping_aula.md](02_tutorial_ping_aula.md) |
| 3 | [03_checklist_entrega.md](03_checklist_entrega.md) |
Esta pasta pode ser removida localmente após o semestre; o núcleo e `docs/documentation/` continuam válidos para qualquer extensão do projeto.
+10 -13
View File
@@ -1,20 +1,17 @@
# Plugin Ping (exercício de aula)
# Plugin Ping (exercício local)
Material didático para o aluno **implementar** um plugin de Ping/Pong com medição de RTT. No Git ficam só este README e o [tutorial](../../docs/documentation/17_tutorial_ping_aula.md). Código e `build.xml` locais estão no `.gitignore` (`src/`, `nbproject/`, `dist/`).
Pasta opcional para desenvolver um módulo de Ping/Pong com medição de RTT. O código de solução **não** faz parte do gate CI do repositório.
## Onde está o tutorial
Tutorial passo a passo: [docs/tp/02_tutorial_ping_aula.md](../../docs/tp/02_tutorial_ping_aula.md).
Tutorial canônico (passo a passo): [docs/documentation/17_tutorial_ping_aula.md](../../docs/documentation/17_tutorial_ping_aula.md).
## Fluxo de trabalho
## Como o aluno trabalha
1. Copiar a estrutura de [`plugins/chat`](../chat) para um projeto local (ou criar `plugins/ping` com `src/` apenas no fork pessoal).
2. Implementar `PingPlugin`, mensagens e `PingPanel` (`JPanel` + `bindShellWorkspaceContent`).
3. Build: `ant jar` → `dist/pitiupi.ping.jar`.
4. Instalar em `PITIUPI_HOME/plugins/` e reiniciar o Pitiupi.
5. Abrir o plugin pela aba **Plugins** na galeria (aba não abre sozinha no boot).
1. Copiar a estrutura de [`plugins/chat`](../chat) para `plugins/ping` (local).
2. Implementar `PingPlugin`, mensagens e painel (`bindShellWorkspaceContent`).
3. `ant jar` → instalar JAR em `PITIUPI_HOME/plugins/` e reiniciar o Pitiupi.
4. Abrir o plugin pela galeria **Plugins**.
## Pré-requisitos
- Núcleo compilado: `../../pitiupi/dist/pitiupi.jar`
- Leitura: [09_sistema_de_plugins.md](../../docs/documentation/09_sistema_de_plugins.md)
- Núcleo: `../../pitiupi/dist/pitiupi.jar`
- SPI e mensagens: [09_sistema_de_plugins.md](../../docs/documentation/09_sistema_de_plugins.md)