aboutsummaryrefslogtreecommitdiff
path: root/aulas/ambientes.rst
blob: 7499b02252ae19a1f5a7c90534fcbeb000db7efe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
2. Ambientes de desenvolvimento
===============================

2.1 - Ambiente básico
---------------------

2.1 - Sistemas Operacionais
~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Neste curso será adotado o sistema operacional GNU/Linux como plataforma básica de trabalho.
- Porém, o conteúdo do curso pode ser facilmente adaptado para outros sistemas, como é o caso do MacOSX.
- Se você usa Windows, recomendamos:
  - A criação de uma máquina virtual em GNU/Linux usando o Vagrant de acordo com a aula de `DevOps <devops.html>`_.
  - Ou o uso do Cygwin juntamente com seu editor de textos favorito.

2.1 - O essencial
~~~~~~~~~~~~~~~~~

Desktop sem distrações: o que é o mínimo que você precisa?

- Editor de texto ou IDE: produz código.
- Emulador de terminal: execução de tarefas.
- Navegador web: ambiente de teste.

Roteiro do screencast:

#. Exibir um desktop básico e limpo.
#. Discorrer sobre cores de fundo, teclas de atalho e abas de terminal e editor de texto.

2.1 - Editores
~~~~~~~~~~~~~~

- Vantagens dos IDEs (NetBeans, Eclipse, Aptana, etc):
  - Facilidade de uso.
  - Ambiente de desenvolvimento integrado.
- Vantagens dos editores de texto (Atom, Emacs, VIM, Notepad++, Gedit etc):
  - Simplicidade.
  - Performance.

Roteiro do screncast:

#. Abrir alguns editores de texto e IDEs e seus sites.

2.2 - Emulador de terminal
~~~~~~~~~~~~~~~~~~~~~~~~~~

- Despacha comandos textuais.
- Comandos podem ser automatizados em scripts.
- Comandos básicos de UNIX usados no curso.
- Atalhos do terminal (histórico de comandos, limpeza da tela e movimentos do cursor).
- Shells: bash, zsh, php, python, rvm, node, etc!

Roteiro do screencast:

::

  # Navegação
  pwd
  ls
  ls /
  ls ..
  ls ~
  cd
  cd -
  cd ..
  cd /

  # Criando e apagando arquivos e pastas
  touch arquivo
  mkdir pasta
  rm arquivo
  rmdir pasta

  # Movendo e copiando arquivos
  cp arquivo pasta
  mv pasta pasta.20151112
  rm arquivo

  # Criando atalhos
  ln pasta.20151112 pasta.latest
  ls -l

  # Procurando ajuda!
  man ls

  # Quem sou eu?
  whoami

  # Executando com permissões de superusuário
  sudo whoami

  # Instalando um programa
  sudo apt-get install git

2.3 - Fluxo de trabalho
-----------------------

2.3 - Básico
~~~~~~~~~~~~

- Diário de bordo: de um arquivo de texto a um blog sobre desenvolvimento (o próprio blogático, no nosso caso!).
- Organização de pastas.
- Backups.

Roteiro do screencast:

::

  # Criando uma pasta para projetos
  mkdir ~/projetos

  # Criando a pasta do nosso projeto
  mkdir ~/projetos/blogatico

2.3 - Arquivos básicos
~~~~~~~~~~~~~~~~~~~~~~

* README: em Markdown (.md), reStructuredText (.rst), texto simples (.txt), etc.
* ChangeLog: opcional e pode ser gerado automaticamente.
* Makefile ou outro arquivo dependendo do método de construção do software (Rakefile, setup.py, etc).

Roteiro do screencast:

::

    # Criando a estrutura básica do seu projeto
    cd ~/projetos/blogatico
    touch README.md ChangeLog TODO.md

2.3 - Sistemas de tickets (tarefas)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Kanban.
* Arquivo TODO em formatos plaintext, Markdown, etc.
* Um arquivo por tarefa em pastas `open` e `closed`.
* Taskwarrior ou similar.
* Aplicação própria (Trac, etc)
* TODOs and FIXMEs ao longo do código (em última instância).

Roteiro do screncast:

::

    gedit README.md TODO.md

Imagens:

* Diversos sistemas de tickets.

2.3 - Scripts e templates
~~~~~~~~~~~~~~~~~~~~~~~~~

- Configurações, scripts e atalhos de produtividade.
- Templates de desenvolvimento.
- Balanço:

  * Customizações deixam os ambientes sob medida.
  * Porém tem um custo de criação e de manutenção.
  * Existem customizações disponíveis e prontas para uso.

Roteiro do screencast:

::

  # Criando um script!
  mkdir bin
  touch bin/build

  # Não funciona sem permissão de execução!
  ./bin/build

  # Agora vai!
  chmod +x bin/build
  ./bin/build

  gedit bin/build

2.4 - Atividades
----------------

#. Teste diversos editores de textos e IDEs disponíveis para sua plataforma de desenvolvimento. Avalie cada um deles em termos de performance, funcionalidades, facilidade de uso e adaptação. A preferência pela plataforma de desenvolvimento varia muito de pessoa para pessoa: tente descobrir a sua!

#. Crie a prática de avaliar seu fluxo de trabalho e identificar o que mais lhe incomoda: pode ser aquela tecla de atalho incômoda ou mesmo a falta de uma tecla de atalho para uma dada operação. Pode ser a falta de um script para automatizar tarefas repetitivas ou qualquer coisa que tira transfere a concentração do seu trabalho para tarefas operacionais. Como você poderia resolver o problema?

#. Crie uma pasta para o seu projeto.

#. Hora de programar!

Referências
-----------

- `Atom <https://atom.io/>`_.
- `Lime Text Editor <http://limetext.org/>`_.