From adf8498e2a624c1d5bd86ed459a1a1d7efeadb85 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Tue, 10 Nov 2015 02:06:54 -0200 Subject: Define projeto de exemplo --- Makefile | 2 ++ aulas/ambientes.rst | 14 +++++++++++ aulas/licencas.rst | 6 +++++ aulas/metodologias.rst | 49 +++++++++++++++++++++++++++++++++--- aulas/reinventando.rst | 1 + aulas/versionamento.rst | 67 ++++++++++++++++++++++++++++++++++++++++++++++--- 6 files changed, 131 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 9b526a5..cb829a8 100644 --- a/Makefile +++ b/Makefile @@ -164,3 +164,5 @@ doc: web @pandoc ementa.rst -o _build/pdf/ementa.pdf @pandoc ementa.rst -o _build/odt/ementa.odt @pandoc ementa.rst -o _build/docx/ementa.docx + +publish: web web_deploy diff --git a/aulas/ambientes.rst b/aulas/ambientes.rst index 828f5b2..d4c63a9 100644 --- a/aulas/ambientes.rst +++ b/aulas/ambientes.rst @@ -40,6 +40,20 @@ - Organização de pastas. - Backups. +Roteiro do screencast: + +:: + + # Criando uma pasta para projetos + mkdir ~/projetos + + # Criando a pasta do nosso projeto + mkdir ~/projetos/blogatico + + # Criando a estrutura básica do seu projeto + cd ~/projetos/blogatico + touch README.md ChangeLog TODO.md + 2.4 - Scripts e templates ~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/aulas/licencas.rst b/aulas/licencas.rst index cd3e678..d56b8af 100644 --- a/aulas/licencas.rst +++ b/aulas/licencas.rst @@ -128,6 +128,12 @@ Exemplo: `licença desta documentação `_. * Você pode criar sua própria licença! * Você pode licenciar o seu trabalho sob múltiplas licenças. +Roteiro do screencast: + +:: + + wget https://www.gnu.org/licenses/gpl.txt -O LICENSE.txt + 3.6 Atividades -------------- diff --git a/aulas/metodologias.rst b/aulas/metodologias.rst index 53f665d..a5efb2c 100644 --- a/aulas/metodologias.rst +++ b/aulas/metodologias.rst @@ -107,16 +107,57 @@ Queremos: 1.7 - Começando um projeto -------------------------- -- Brainstorm! O que é o projeto? -- Exemplo: um pequeno website. -- Pesquisa do que já existe. +1.7 - Etapas +~~~~~~~~~~~~ + +- Etapa 0: descoberta, brainstorm e levantamento de escopo! + + - Qual ou quais problemas a serem atacados? + - Como definir o projeto e seu escopo? O que é e o que não é? + - Quais soluções possíveis? Qual a escolhida? + - A ser realizado em conjunto pel equipe de desenvolvimento e quaisquer partes envolvidas (clientes, por exemplo). + - Descrição em alto nível. + +- Etapa 1: pesquisa do que já existe: quais projetos abarcam os problemas? No que deixam a desejar? +- Etapa 2: planejamento inicial: bootstrap, provas de conceito, etc. +- Etapa 3: aplicar um conjunto de metodologias mas principalmente *realizar* o projeto. + +Imagens: + +* Diagramas jocosos de problema/solução. + +1.8 - Projeto de exemplo +~~~~~~~~~~~~~~~~~~~~~~~~ + +0. Descoberta: + + * Problema: garantir que o aluno, ao concluir este curso, possua um blog simples para relatar suas descobertas em desenvolvimento de software (knowledge base / bagagem de conhecimento pessoal). + * Escopo: + + * O blog deve ser construido de acordo com as ferramentas abordadas neste curso. + * Quanto mais simples, melhor: fácil de construir e confortável para manter e consultar (afinal, não queremos gastar tempo no futuro mantendo esse projeto). + * Que dificilmente se torne tecnologicamente obsoleto: sem base de dados, com o mínimo de programação e formato de edição simples. + * Que dependa o mínimo de bibliotecas e aplicações externas. + * Que seja fácil de hospedar em qualquer local, fácil de fazer backup e que possa facilmente ser transformado noutros formatos (livro). + * Soluções: + * Criar um blog em qualquer lugar e fazer backups na unha? Pouco elegante e não atende a todos os requisitos. + * Criar um blog em HTML simples e subir manualmente para um servidor? Não, queremos algo entre a web 1.0 e a web contemporânea. + * Que tal criarmos um blog gerado estaticamente, isto é, um conjunto de arquivos simples de editar e que são compilados num site que possa ser facilmente enviado para um servidor como qualquer outra aplicação web? + +1. Pesquisa: pesquise pesquise pesquise! O que você encontrou? +2. Bootstrap: por hora precisamos apenas de um nome e o resto será abordado durante o curso! Curiosamente, nomear um projeto é a etapa mais difícil, mas hoje estamos criativos e chamaremos de "blogático", um blog prático :P +3. Realização: quer ver como o projeto pode ser realizado? Continue com o curso! :P 1.8 - Atividades ---------------- #. Adote a técnica Pomodoro numa tarefa grande e importante do seu dia. Você pode usar qualquer cronômetro disponível -- do seu computador, do telefone, do relógio de pulso ou mesmo um timer de cozinha. Permaneça apenas realizando a tarefa importante em cada bloco de 25 minutos. Avalie a eficácia do método: ele te ajudou? -#. Para este curso, definimos o nosso projeto de exemplo como sendo um website bem simples. Você pode fazer o mesmo ou então escolher qualquer projeto que queira fazer usando qualquer linguagem de programação e adaptar as atividades propostas nas aulas seguintes de acordo com o seu caso. Sugerimos apenas que você escolhe um nome para o seu projeto, mesmo que temporário! Mas lembre-se: nomes tem poder! :) +#. Para este curso, definimos o nosso projeto de exemplo como sendo um website/blog bem simples. Você pode fazer o mesmo ou então escolher qualquer projeto que queira fazer usando qualquer linguagem de programação e adaptar as atividades propostas nas aulas seguintes de acordo com o seu caso. Sugerimos apenas que você escolhe um nome para o seu projeto, mesmo que temporário! Mas lembre-se: nomes tem poder! :) + +# Pesquise geradores de site estáticos (static site generators). O que você encontrou? + +# Bônus: pense num nome para seu projeto ou, se preferir, adote o que nós escolhemos. Referências ----------- diff --git a/aulas/reinventando.rst b/aulas/reinventando.rst index 6303ba1..c7aa0cb 100644 --- a/aulas/reinventando.rst +++ b/aulas/reinventando.rst @@ -4,6 +4,7 @@ 6.1 - Patterns -------------- +* Desacoplamento. * Filosofia UNIX: * Pequenos softwares/bibliotecas. * Que fazem uma coisa bem. diff --git a/aulas/versionamento.rst b/aulas/versionamento.rst index 056c779..6277c1e 100644 --- a/aulas/versionamento.rst +++ b/aulas/versionamento.rst @@ -73,8 +73,11 @@ Imagens: A única exigência é especificar um nome e email (de preferência funcional ;) ara constar nas informações de revisão. +Roteiro do screencast: + :: + cd ~/projetos/blogatico git config --global user.name "Seu Nome" git config --global user.email "seu@email" @@ -82,21 +85,25 @@ ara constar nas informações de revisão. ~~~~~~~~~~~~~~~~~~ * Repositórios: "pastas geridas pelo git". -* Iniciando um projeto no git: +* Pasta ".git" criada no repositório: não polui seu projeto. + +Roteiro do screencast: :: - mkdir projeto - cd projeto + # Adicionando nosso projeto no git + cd ~/projetos/blogatico git init -* Pasta ".git" criada no repositório: não polui seu projeto. + # Clonando um projeto existente 4.3 - Trabalhando no projeto ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Três estágios de mudanças: cometidas (commited), marcadas para commit (staged) e modificadas (changed). +Roteiro do screencast: + :: atom README.md # edite seu arquivo @@ -123,6 +130,8 @@ Imagens: * Cada "revisão" do histórico representa um estado do repositório (snapshot). * ID da revisão: hash SHA-1. +Roteiro do screencast: + :: git log @@ -139,6 +148,8 @@ Imagens: * Você pode fazer um novo commit na unha ou usar o ferramental do git. +Roteiro do screencast: + :: git commit --amend @@ -148,9 +159,39 @@ Imagens: 4.5 - Ramificações (branches e merges) -------------------------------------- +* Existem vários "ramos" na história de um software. +* Os ramos, ou branches, divergem e convergem. +* A convergência nem sempre é suave, porém o git auxilia com várias estratégias. + +Roteiro do screencast: + +:: + + git branch develop + git checkout develop + git commit + git checkout master + git merge develop + 4.6 - Usando o git-flow ----------------------- +* O git-flow é um plugin para o git. +* Ele força um fluxo de trabalho integrado. +* Branches básicos (nomes podem ser customizados): + + * master: branch principal com o código que é submetido para a produção. + * develop: branch de desenvolvimento onde funcionalidades são integradas e seu conjunto testado. + * features/: prefixo para branches onde funcionalidades são desenvolvidas. + * hotfix/: prefixo para branches de correções rápidas (bugfixes). + +Roteiro do screencast: + +:: + + git flow init + git flow feature start doc + 4.7 - Submódulos ---------------- @@ -158,6 +199,24 @@ Imagens: * Trava em revisões específicas. * "Sistema de empacotamento" simples e integrado ao git. +Roteiro do screencast: + +:: + + # No repositorio + git submodule add https://github.com/dhg/Skeleton skeleton + git commit -a -m "Adiciona skeleton" + + # Clonando o repositorio noutro local + cd .. + git clone projeto projeto-clonado + cd projeto-clonado + git submodule update --init + + # Ou: + cd .. + git clone --recursive projeto projeto-clonado + 4.8 - Social coding (gitlab, github, etc) ----------------------------------------- -- cgit v1.2.3