Workshop WebDev

Criado por José Lopes

Bem-vindo ao Workshop de WebDev! Este workshop tem como objetivo fornecer as bases necessárias para que qualquer participante possa desenvolver e lançar o seu site pessoal, completamente do zero!

Informações

Próxima Edição do Workshop

Sexta-feira, dia 13-12-2024 das 17:30h às 20h na sala v0.02.

Se não és membro da HackerSchool, inscreve-te aqui.

Objetivo

Ensinar como fazer uma página pessoal leve, portátil e (esperançosamente) bonita, mais ou menos como esta (ok, seria bonito fosse eu abençoado com ✨graphic design skills✨, tu farás melhor). Durante o WS muitas liberdades serão tomadas e o produto final será algo construído passo a passo, em conjunto. Foca-se maioritariamente em desenvolvimento Frontend. No final, cada participante será capaz de desenvolver a sua página web e lançá-la na plataforma de hosting do Técnico!

Temas Abordados

  1. HTML
  2. CSS
  3. JavaScript (muito levemente 🏌️)
  4. HTTP requests
  5. Deploy no Sigma, by Técnico

Recursos

  1. Repositório com Site Exemplo
  2. Site Exemplo, um exemplo de produto final.

Segue-se o guia do Workshop!

1. HTML

Da Wikipedia: “HTML (abreviação para a expressão inglesa HyperText Markup Language, que significa: “Linguagem de Marcação de Hipertexto”) é uma linguagem de marcação utilizada na construção de páginas na Web. Documentos HTML podem ser interpretados por navegadores.”

Principais Características:

  1. Define a estrutura básica de uma página web
  2. Utiliza “tags” para marcar diferentes tipos de conteúdo
  3. Permite criar links, inserir imagens, parágrafos, títulos, e muito mais!

Começamos pelo “boilerplate”

<!DOCTYPE html>
<html lang="en">
    <head>
        <!-- isto é um comentário -->
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>HackerSchool 2024!</title>
        <link href="css/style.css" rel="stylesheet">
        <link rel="icon" href="favicon.ico" type="image/x-icon">
    </head>
    <body>
        <!-- Conteúdo da página vai aqui -->
    </body>
</html>

Aqui é possível definir a língua, o título da página, importar outros recursos e definir um icon.

Tags HTML Fundamentais

Tags de Cabeçalho

<h1>Título Principal</h1>
<h2>Subtítulo</h2>
<h3>Subtítulo Menor</h3>

Tags de Texto

<p>Parágrafo normal</p>
<strong>Texto em negrito</strong>
<em>Texto em itálico</em>
<a href="https://hackerschool.dev">Link para o site</a>
<img src="imagem.jpg" alt="Descrição da imagem">

Tags Semânticas

<header>Cabeçalho da página</header>
<nav>Menu de navegação</nav>
<main>Conteúdo principal</main>
<footer>Rodapé</footer>

2. CSS

O que é CSS?

Cascading Style Sheets (CSS) é a linguagem utilizada para ✨tornar bonitos✨ elementos escritos em HTML.

Formas de Aplicar CSS

  1. CSS Inline
<p style="color: blue; font-size: 16px;">Texto azul</p>
  1. Tag <style> no HTML
<style>
    p {
        color: blue;
        font-size: 16px;
    }
</style>
  1. Arquivo CSS Externo (Recomendado)
/* style.css */
p {
    color: blue;
    font-size: 16px;
}

Seletores Principais

/* Por tag */
p { }

/* Por classe */
.texto-azul { }

/* Por ID */
#meu-paragrafo { }

/* Seletor de atributo */
input[type="text"] { }

3. JavaScript

Introdução Básica

JavaScript permite adicionar interatividade à página web.

// Exemplo simples
function mudaCor() {
    document.body.style.backgroundColor = 'blue';
}

// Adicionar evento a um botão
document.getElementById('meuBotao').addEventListener('click', mudaCor);

4. A Web e HTTP

O que é HTTP?

Protocolo de transferência de hipertexto, base da comunicação de dados na web. Sei como funciona? Não. Mas tu também não precisas. Só precisas de saber os diferentes tipos de requests:

  • GET: Obter dados
  • POST: Enviar dados
  • PUT: Atualizar dados
  • DELETE: Remover dados

E que existem códigos de status úteis:

  • 200 OK: The standard “everything is fine” response
  • 201 Created: Successfully created a new resource
  • 204 No Content: Successful request with no content to return
  • 301 Moved Permanently: Page has been permanently relocated
  • 400 Bad Request: Server couldn’t understand the request
  • 401 Unauthorized: Authentication is required
  • 403 Forbidden: Server understands the request but refuses to authorize it
  • 404 Not Found: The requested resource doesn’t exist
  • 500 Internal Server Error: Generic server error message
  • 503 Service Unavailable: Server is temporarily overloaded or down

5. Deploy no Sigma

Acesso ao Servidor

O servidor Sigma pode ser acedido via SSH (Secure Shell) usando o endereço:

istid@sigma.tecnico.ulisboa.pt
  • Utiliza a mesma palavra-passe que o sistema Fénix
  • Permite acesso remoto seguro ao seu diretório web

Métodos de Deploy

Para dar deploy do site é só preciso copiar os ficheiros para o diretório ~/web no servidor.

Opção 1: Deploy via rsync

# Comando básico de deploy, usando rsync para copiar
rsync -avz ./meu-site/ istid@sigma.tecnico.ulisboa.pt:web

# Parâmetros:
# -a: modo arquivo (preserva permissões)
# -v: verbose (mostra detalhes da transferência)
# -z: comprime dados durante a transferência

Opção 2: FileZilla (Interface Gráfica)

  1. Instala o FileZilla

  2. Configurações de conexão:

    • Protocolo: SFTP
    • Servidor: sigma.tecnico.ulisboa.pt
    • Porta: 22
    • Tipo de autenticação: Palavra-passe normal
    • Utilizador: istId
    • Palavra-passe: Credenciais do Fénix
  3. Copia o teu site para o diretório ~/web

  4. Profit

Verificação

Passos Seguintes

Fantástico! Deténs agora uma poderosa ferramenta de expressão e exploração criativa.

Se quiseres avançar para sites mais complexos talvez penses em explorar frameworks. Sugerimos que dês uma olhada no HUGO, bastante simples mas eficaz, é o que usamos no site da HackerSchool ahahaha.

O mundo espera pelas tuas criações,

Hackers Out