Projeto Final — Meu Ambiente de Desenvolvimento

Projeto integrador dos dez módulos do FT-001.

Projeto Final — Meu Ambiente de Desenvolvimento

O Projeto Final integra os dez módulos do FT-001. O objetivo não é demonstrar programação avançada, mas provar que você consegue explicar a relação entre arquivos, runtime, processo, sistema operacional, CPU, memória e rede.

Entrega esperada

ft001-projeto-final/
├── src/sistema.py
├── web/index.html
├── data/
├── docs/ambiente.md
├── docs/execucao.md
├── docs/rede.md
├── docs/arquitetura.md
├── assets/
├── tests/
├── scripts/
├── README.md
├── .gitignore
└── .env.example

1. Inventário do ambiente

Registre sistema operacional, release, arquitetura, CPU, núcleos/processadores lógicos, RAM, armazenamento, editor, shell, Python, Git, IPv4/IPv6 quando disponíveis, gateway e DNS. Use “não instalado” quando uma ferramenta opcional não existir.

2. Programa principal

Execute o arquivo src/sistema.py a partir da raiz do projeto. Ele deve aceitar um nome, exibir informações do ambiente, gravar data/resultado.txt em UTF-8 e retornar exit code 0. Nome vazio deve retornar 1.

from datetime import datetime
import os
import platform
import socket


def main():
    nome = input("Digite seu nome: ").strip()

    if not nome:
        print("Erro: o nome não pode ficar vazio.")
        return 1

    hostname = socket.gethostname()
    resultado = [
        "=== CENC ACADEMY — FT-001 ===",
        f"Aluno: {nome}",
        f"Sistema operacional: {platform.system()}",
        f"Release informado pela plataforma: {platform.release()}",
        f"Arquitetura: {platform.machine()}",
        f"Python: {platform.python_version()}",
        f"Hostname: {hostname}",
        f"Diretório atual: {os.getcwd()}",
        f"Data da execução: {datetime.now():%Y-%m-%d %H:%M:%S}",
    ]

    print()
    for linha in resultado:
        print(linha)

    os.makedirs("data", exist_ok=True)
    with open("data/resultado.txt", "w", encoding="utf-8") as arquivo:
        arquivo.write("\n".join(resultado))
        arquivo.write("\n")

    print()
    print("Resultado salvo em data/resultado.txt")
    return 0


if __name__ == "__main__":
    raise SystemExit(main())

3. Processo e execução

Em docs/execucao.md, explique arquivo → shell → resolução do comando → runtime Python → processo → espaço de memória → CPU → stdin/stdout → arquivo persistente. Observe um PID quando possível, sem encerrar processos do sistema.

4. Servidor HTTP local

Crie/edite web/index.html e inicie somente em loopback:

python -m http.server 8000 --bind 127.0.0.1 --directory web
# ou python3, conforme o ambiente

Acesse http://localhost:8000, teste um caminho inexistente para observar 404, encerre com Ctrl+C e repita em 8080. O servidor http.server é exclusivamente didático e não deve ser usado em produção.

5. Rede

Em docs/rede.md, registre interfaces, endereços, gateway e DNS com ferramentas do sistema. Se houver conectividade, faça uma consulta DNS. Não trate socket.gethostname() ou a resolução do hostname como método universal para descobrir a interface LAN.

6. Git e segurança

Se Git estiver disponível, execute git init e git status. Commit é opcional no FT-001. .env deve permanecer ignorado e .env.example não pode conter senhas, tokens ou chaves reais.

7. Arquitetura

USUÁRIO
  ↓
EDITOR → ARQUIVO-FONTE
  ↓
TERMINAL / SHELL
  ↓
RUNTIME PYTHON
  ↓
PROCESSO
  ├── CPU
  ├── RAM
  ├── FILESYSTEM
  └── REDE
  ↓
SISTEMA OPERACIONAL
  ↓
HARDWARE

Rubrica de autoavaliação

  • Inventário do ambiente completo.
  • Estrutura de diretórios correta.
  • sistema.py executa com exit codes 0 e 1 conforme o caso.
  • resultado.txt é produzido em UTF-8.
  • Servidor local responde em loopback e 404 é compreendido.
  • Relatório de rede distingue hostname, interface, endereço e DNS.
  • README explica requisitos e execução.
  • Nenhum segredo real foi incluído.
  • Arquitetura conecta código, runtime, processo, SO e hardware.
  • O estudante consegue explicar o projeto sem depender apenas de copiar comandos.

Conclusão

Depois de concluir o projeto e conferir a rubrica, marque este item como concluído. A certificação ainda exige aprovação na Avaliação Final com pelo menos 70%.

Avaliação complementar opcional

Depois de realizar o projeto, você pode concluir este item normalmente e seguir para a Avaliação Final. Se desejar uma análise individual do trabalho, poderá solicitar separadamente uma avaliação com validação humana. Para essa avaliação opcional, compartilhe um link acessível ao pacote ZIP ou repositório do projeto. Esse serviço não é necessário para concluir o FT-001 ou emitir o certificado gratuito.

Avaliação opcional

Avaliação com validação humana

Receba nota e feedback individual sobre esta atividade. Este serviço é opcional e não é necessário para concluir o curso ou receber o certificado gratuito.

Entrar para solicitar

Arquivos para praticar