Skip to content

Commit 672c343

Browse files
committed
Resolve conficts / Update files
1 parent 6d77b61 commit 672c343

File tree

142 files changed

+186
-5841
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

142 files changed

+186
-5841
lines changed

1-js/03-code-quality/01-debugging-chrome/article.md

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,9 @@
22

33
Antes de escrevermos código mais complexo, vamos falar de debugging (depuração de erros).
44

5-
<<<<<<< HEAD
6-
[Depuração](https://pt.wikipedia.org/wiki/Depura%C3%A7%C3%A3o) é o processo de procura e correção de erros num programa. Todos os navegadores (*browsers*) modernos e muitas outras plataformas (*environments*) suportam ferramentas de *debugging* -- uma UI (Interface de Utilizador) disponível nas ferramentas do desenvolvedor (*developer tools*) que torna a depuração de erros muito mais fácil. Ela também permite rastrear o código passo-a-passo para ver exactamente o que está a ser executado.
7-
8-
Aqui, vamos utilizar o Chrome porque tem bastantes funcionalidades, mas a maioria dos outros navegadores possuem um processo similar.
9-
=======
10-
[Debugging](https://en.wikipedia.org/wiki/Debugging) is the process of finding and fixing errors within a script. All modern browsers and most other environments support debugging tools -- a special UI in developer tools that makes debugging much easier. It also allows to trace the code step by step to see what exactly is going on.
5+
[Depuração](https://pt.wikipedia.org/wiki/Depura%C3%A7%C3%A3o) é o processo de procura e correção de erros num programa. Todos os navegadores (*browsers*) modernos e muitas outras plataformas (*environments*) suportam ferramentas de *debugging* -- uma UI (Interface de Utilizador) especial disponível nas ferramentas do desenvolvedor (*developer tools*) que torna a depuração de erros muito mais fácil. Ela também permite rastrear o código passo-a-passo para ver exatamente o que está a ser executado.
116

12-
We'll be using Chrome here, because it has enough features, most other browsers have a similar process.
13-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
7+
Aqui, vamos utilizar o Chrome porque tem muitas funcionalidades, mas a maioria dos outros navegadores possuem um processo similar.
148

159
## O painel "*Sources*"
1610

@@ -24,33 +18,19 @@ Aqui está o que poderá ver, se o estiver a fazer pela primeira vez:
2418

2519
![](chrome-open-sources.svg)
2620

27-
<<<<<<< HEAD
2821
O botão de alternador <span class="devtools" style="background-position:-172px -98px"></span> abre o separador com os ficheiros.
29-
=======
30-
The toggler button <span class="devtools" style="background-position:-172px -98px"></span> opens the tab with files.
31-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
3222

3323
Vamos clicar nele, e selecionar `hello.js` na vista de árvore de recursos apresentada. Aqui está o que deveria ser mostrado:
3424

3525
![](chrome-tabs.svg)
3626

37-
<<<<<<< HEAD
3827
O painel *Sources* possui 3 partes:
3928

4029
1. O painel **File Navigator**, lista ficheiros de HTML, JavaScript, CSS e outros, incluindo imagens anexadas à página. Extensões ao Chrome (*Chrome extensions*) também podem aparecer aqui.
4130
2. O painel **Code Editor**, mostra o código-fonte.
4231
3. O painel **JavaScript Debugging**, é para a depuração de erros; iremos explorá-lo em breve.
4332

4433
Agora, poderia clicar novamente no mesmo botão de alternador <span class="devtools" style="background-position:-172px -122px"></span> para ocultar a lista de recursos e dar ao código algum espaço.
45-
=======
46-
The Sources panel has 3 parts:
47-
48-
1. The **File Navigator** pane lists HTML, JavaScript, CSS and other files, including images that are attached to the page. Chrome extensions may appear here too.
49-
2. The **Code Editor** pane shows the source code.
50-
3. The **JavaScript Debugging** pane is for debugging, we'll explore it soon.
51-
52-
Now you could click the same toggler <span class="devtools" style="background-position:-172px -122px"></span> again to hide the resources list and give the code some space.
53-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
5434

5535
## Console
5636

1-js/03-code-quality/02-coding-style/1-style-errors/solution.md

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,12 @@ function pow(x,n) // <- nenhum espaço entre argumentos
1010
return result;
1111
}
1212

13-
<<<<<<< HEAD
1413
let x=prompt("x?",''), n=prompt("n?",'') // <-- tecnicamente possível,
15-
// mas o melhor é torná-la em 2 linhas, também não existem espaços, e falta o ;
14+
// mas o melhor é a tornar em 2 linhas, também não existem espaços, e falta o ;
1615
if (n<0) // <- nenhum espaço dentro (n < 0), e deveria existir uma linha extra sobre a condição
1716
{ // <- chaveta de abertura numa linha em separado
1817
// abaixo - linhas longas podem ser repartidas por múltiplas linhas para melhorar a legíbilidade
1918
alert(`A potência de ${n} não é suportada, por favor insira um número inteiro maior do que zero`);
20-
=======
21-
let x=prompt("x?",''), n=prompt("n?",'') // <-- technically possible,
22-
// but better make it 2 lines, also there's no spaces and missing ;
23-
if (n<=0) // <- no spaces inside (n <= 0), and should be extra line above it
24-
{ // <- figure bracket on a separate line
25-
// below - long lines can be split into multiple lines for improved readability
26-
alert(`Power ${n} is not supported, please enter an integer number greater than zero`);
27-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
2819
}
2920
else // <- poderia ser escrito numa única linha, como "} else {"
3021
{
@@ -48,14 +39,8 @@ function pow(x, n) {
4839
let x = prompt("x?", "");
4940
let n = prompt("n?", "");
5041

51-
<<<<<<< HEAD
5242
if (n < 0) {
5343
alert(`A potência de ${n} não é suportada, por favor insira um número inteiro maior do que zero`);
54-
=======
55-
if (n <= 0) {
56-
alert(`Power ${n} is not supported,
57-
please enter an integer number greater than zero`);
58-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
5944
} else {
6045
alert( pow(x, n) );
6146
}

1-js/03-code-quality/02-coding-style/article.md

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,8 @@ let x = prompt("x?", "");
2525
let n = prompt("n?", "");
2626
2727
if (n < 0) {
28-
<<<<<<< HEAD
2928
alert(`A potência de ${n} não é suportada,
3029
por favor insira um número inteiro positivo`);
31-
=======
32-
alert(`Power ${n} is not supported,
33-
please enter a non-negative integer number`);
34-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
3530
} else {
3631
alert( pow(x, n) );
3732
}
@@ -92,14 +87,7 @@ Por exemplo:
9287
```js
9388
// o acento grave (*backtick*) ` permite repartir uma *string* por múltiplas linhas
9489
let str = `
95-
<<<<<<< HEAD
96-
O TC39 da ECMA International, é um grupo de desenvolvedores e implementadores de JavaScript, académicos, e outros, colaborando com a comunidade para manter e
97-
evoluir a definição de JavaScript.
98-
=======
99-
ECMA International's TC39 is a group of JavaScript developers,
100-
implementers, academics, and more, collaborating with the community
101-
to maintain and evolve the definition of JavaScript.
102-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
90+
O TC39 da ECMA International, é um grupo de desenvolvedores e implementadores de JavaScript, académicos, e outros, colaborando com a comunidade para manter e evoluir a definição de JavaScript.
10391
`;
10492
```
10593

1-js/03-code-quality/03-comments/article.md

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@ Descreva a arquitetura
124124
Documente os parâmetros e o uso da função
125125
: Existe uma sintaxe especial, [JSDoc](http://en.wikipedia.org/wiki/JSDoc), para documentar uma função: o seu uso, parâmetros, e valor retornado.
126126

127-
<<<<<<< HEAD
128127
Por exemplo:
129128

130129
```js
@@ -134,35 +133,17 @@ Por exemplo:
134133
* @param {number} x O número a elevar.
135134
* @param {number} n A potência, deve ser um número natural.
136135
* @return {number} x elevado à n-ésima potência.
137-
=======
138-
For instance:
139-
```js
140-
/**
141-
* Returns x raised to the n-th power.
142-
*
143-
* @param {number} x The number to raise.
144-
* @param {number} n The power, must be a natural number.
145-
* @return {number} x raised to the n-th power.
146-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
147136
*/
148137
function pow(x, n) {
149138
...
150139
}
151140
```
152141

153-
<<<<<<< HEAD
154142
Tais comentários, nos permitem compreender o propósito da função e a usar de forma correta, sem olhar para o seu código.
155143

156144
A propósito, muitos editores, como o [WebStorm](https://www.jetbrains.com/webstorm/, podem também os perceber e os usar para fornecer completação automática de palavras (*autocomplete*), e algumas verificações de código (*code-checking*) automáticas.
157145

158146
Também, existem ferramentas como o [JSDoc 3](https://github.com/jsdoc3/jsdoc), que podem gerar documentação HTML a partir de comentários. Pode ler mais informação sobre o JSDoc em <http://usejsdoc.org/>.
159-
=======
160-
Such comments allow us to understand the purpose of the function and use it the right way without looking in its code.
161-
162-
By the way, many editors like [WebStorm](https://www.jetbrains.com/webstorm/) can understand them as well and use them to provide autocomplete and some automatic code-checking.
163-
164-
Also, there are tools like [JSDoc 3](https://github.com/jsdoc3/jsdoc) that can generate HTML-documentation from the comments. You can read more information about JSDoc at <http://usejsdoc.org/>.
165-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
166147

167148
Porque é a tarefa solucionada dessa forma?
168149
: O que está escrito é importante. Mas, o que *não* está escrito pode ser ainda mais importante, para se compreender o que se passa. Porque é a tarefa solucionada exatamente dessa forma? O código não dá resposta alguma.
@@ -193,12 +174,7 @@ Bons comentários, nos permitem manter o código saudável, voltar a ele após u
193174

194175
**Evite comentários:**
195176

196-
<<<<<<< HEAD
197177
- Que digam "como o código funciona" e "o que faz".
198178
- Coloque-os apenas se for impossível tornar o código tão simples e auto-descritivo que não precise deles.
199-
=======
200-
- That tell "how code works" and "what it does".
201-
- Put them in only if it's impossible to make the code so simple and self-descriptive that it doesn't require them.
202-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
203179

204180
Comentários também são utilizados por ferramentas de auto-documentação, como o JSDoc3: elas os lêm e geram documentos em HTML (ou documentos num outro formato).

1-js/03-code-quality/05-testing-mocha/article.md

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
<<<<<<< HEAD
21
# Teste automatizado com mocha
3-
=======
4-
# Automated testing with Mocha
5-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
62

73
Teste automatizado será utilizado nos exercícios seguintes, e também é amplamente usado em projetos reais.
84

@@ -85,11 +81,7 @@ Assim, o desenvolvimento é *iterativo*. Nós escrevemos a *spec*, a implementam
8581

8682
Vejamos este fluxo de desenvolvimento no nosso caso prático.
8783

88-
<<<<<<< HEAD
8984
O primeiro passo já está completo: nós temos uma *spec* inicial para `pow`. Agora, antes de fazer a implementação, vamos utilizar umas poucas bibliotecas (*libraries*) de JavaScript para executar os testes, apenas para ver se eles estão a funcionar (todos irão falhar).
90-
=======
91-
The first step is already complete: we have an initial spec for `pow`. Now, before making the implementation, let's use few JavaScript libraries to run the tests, just to see that they are working (they will all fail).
92-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
9385

9486
## A *spec* em ação
9587

@@ -171,13 +163,8 @@ Aqui, nós podemos selecionar uma das duas formas para organizar o teste:
171163
assert.equal(pow(2, 3), 8);
172164
});
173165
174-
<<<<<<< HEAD
175-
it("3 elevado a 3 é 27", function() {
176-
assert.equal(pow(3, 3), 27);
177-
=======
178-
it("3 raised to power 4 is 81", function() {
166+
it("3 elevado a 4 é 81", function() {
179167
assert.equal(pow(3, 4), 81);
180-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
181168
});
182169
183170
});
@@ -199,11 +186,7 @@ O resultado:
199186

200187
[iframe height=250 src="pow-2" edit border="1"]
201188

202-
<<<<<<< HEAD
203-
Como nós esperávamos, o segundo teste falhou. Seguramente, a nossa função retorna sempre `8`, enquanto o `assert` espera `27`.
204-
=======
205-
As we could expect, the second test failed. Sure, our function always returns `8`, while the `assert` expects `81`.
206-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
189+
Como nós esperávamos, o segundo teste falhou. Seguramente, a nossa função retorna sempre `8`, enquanto o `assert` espera `81`.
207190

208191
## Melhorando a implementação
209192

1-js/03-code-quality/05-testing-mocha/beforeafter.view/test.js

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,12 @@
1-
<<<<<<< HEAD
21
describe("teste", function() {
2+
// Mocha, geralmente espera pelos testes por 2 segundos antes de os considerar errados
33

4-
before(() => alert("Testes iniciados – antes de todos os testes"));
5-
after(() => alert("Testes terminados – depois de todos os testes"));
6-
=======
7-
describe("test", function() {
8-
9-
// Mocha usually waits for the tests for 2 seconds before considering them wrong
4+
this.timeout(200000); // Com este código nós aumentamos esse tempo - neste caso, para 200,000
105

11-
this.timeout(200000); // With this code we increase this - in this case to 200,000 milliseconds
6+
// Isto, por causa da função "alert", porque se você se demorar a pressionar o botão "OK" oos testes não irão passar!
127

13-
// This is because of the "alert" function, because if you delay pressing the "OK" button the tests will not pass!
14-
15-
before(() => alert("Testing started – before all tests"));
16-
after(() => alert("Testing finished – after all tests"));
17-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
8+
before(() => alert("Testes iniciados – antes de todos os testes"));
9+
after(() => alert("Testes terminados – depois de todos os testes"));
1810

1911
beforeEach(() => alert("antes de um teste – entrando para um teste"));
2012
afterEach(() => alert("depois de um teste – saindo de um teste"));

1-js/03-code-quality/05-testing-mocha/pow-2.view/test.js

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,8 @@ describe("pow", function() {
44
assert.equal(pow(2, 3), 8);
55
});
66

7-
<<<<<<< HEAD
8-
it("3 elevado à potência 3 é 27", function() {
9-
assert.equal(pow(3, 3), 27);
10-
=======
11-
it("3 raised to power 4 is 81", function() {
7+
it("3 elevado à potência 4 é 81", function() {
128
assert.equal(pow(3, 4), 81);
13-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
149
});
1510

1611
});

1-js/05-data-types/01-primitives-methods/article.md

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,10 @@ Eles também fornecem métodos para chamar como se fossem objetos. Estudaremos i
66

77
Vejamos as principais diferenças entre primitivos e objetos.
88

9-
<<<<<<< HEAD
109
Um primitivo
11-
=======
12-
- Is a value of a primitive type.
13-
- There are 7 primitive types: `string`, `number`, `bigint`, `boolean`, `symbol`, `null` and `undefined`.
14-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
1510

1611
- É um valor de um tipo primitivo.
17-
- Existem 6 tipos primitivos: `string`, `number`, `boolean`, `symbol`, `null` e `undefined`.
12+
- Existem 7 tipos primitivos: `string`, `number`, `bigint`, `boolean`, `symbol`, `null` e `undefined`.
1813

1914
Um objeto
2015

@@ -57,11 +52,7 @@ A solução parece um pouco estranha, mas aqui está:
5752

5853
Os "invólucros de objeto" são diferentes para cada tipo primitivo e são chamados: `String`, `Number`, `Boolean` e `Symbol`. Assim, eles fornecem diferentes conjuntos de métodos.
5954

60-
<<<<<<< HEAD
61-
Por exemplo, existe um método [str.toUpperCase()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) que retorna uma string em letras maiúsculas.
62-
=======
63-
For instance, there exists a string method [str.toUpperCase()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) that returns a capitalized `str`.
64-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
55+
Por exemplo, existe um método para *strings* [str.toUpperCase()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) que retorna `str` em letras maiúsculas.
6556

6657
Veja como isso funciona:
6758

1-js/06-advanced-functions/05-global-object/article.md

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,7 @@ O objeto global fornece variáveis e funções que estão disponíveis em qualqu
55

66
No navegador ele é chamado de `window`, no Node.js é `global`, em outros ambientes pode ter outro nome.
77

8-
<<<<<<< HEAD
9-
Recentemente, `globalThis` foi adicionado a linguagem como um nome padrão para o objeto global, que deve ser suportado em todos os ambientes. Em alguns navegadores, como o "non-Chromium Edge", `globalThis` ainda não é suportado, mas pode ser facilmente utilizado através de um polyfill.
10-
=======
11-
Recently, `globalThis` was added to the language, as a standardized name for a global object, that should be supported across all environments. It's supported in all major browsers.
12-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
8+
Recentemente, `globalThis` foi adicionado à linguagem como um nome padrão para o objeto global, e que deve ser suportado em todos os ambientes. Ele é suportado em todos os principais navegadores.
139

1410
Usamos `window` aqui, assumindo que nosso ambiente seja um navegador. Se o seu script puder ser executado em outros ambientes, é melhor utilizar o `globalThis`.
1511

@@ -85,14 +81,7 @@ if (!window.Promise) {
8581
Isso inclui objetos nativos Javascript, como `Array` e valores específicos do ambiente, como `window.innerHeight` -- a altura da janela no navegador.
8682
- O objeto global tem o nome universal `globalThis`.
8783

88-
<<<<<<< HEAD
89-
...Porém é mais frequentemente referido pelos seu nomes específicos de ambientes "old-school", como `window` (navegador) e `global` (Node.js). Como `globalThis` é uma proposta recente, não é suportado pelo "non-Chromium Edge" (mas pode ser usado com um polyfill).
90-
- Devemos salvar valores no objeto global apenas se eles forem realmente globais em nosso projeto. E manter sua quantidade no mínimo.
91-
- No navegador, ao menos que estejamos usando [modules](info:modules), funções e variáveis globais declaradas com `var` tornam-se uma propriedade do objeto global.
84+
...Porém é mais frequentemente referido pelos seu nomes específicos de ambientes "old-school", como `window` (navegador) e `global` (Node.js).
85+
- Devemos salvar valores no objeto global apenas se eles forem realmente globais em nosso projeto. E manter a sua quantidade no mínimo.
86+
- No navegador, a menos que estejamos usando [modules](info:modules), funções e variáveis globais declaradas com `var` se tornam numa propriedade do objeto global.
9287
- Para tornar nosso código à prova de mudanças no futuro e mais fácil de entender, devemos acessar as propriedades do objeto global diretamente, como `window.x`.
93-
=======
94-
...But more often is referred by "old-school" environment-specific names, such as `window` (browser) and `global` (Node.js).
95-
- We should store values in the global object only if they're truly global for our project. And keep their number at minimum.
96-
- In-browser, unless we're using [modules](info:modules), global functions and variables declared with `var` become a property of the global object.
97-
- To make our code future-proof and easier to understand, we should access properties of the global object directly, as `window.x`.
98-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3

1-js/06-advanced-functions/12-arrow-functions/article.md

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,7 @@ Vamos revisitar as *arrow functions*.
44

55
As *arrow functions* não são somente uma "abreviação" para escrevermos menos código.
66

7-
<<<<<<< HEAD
87
O *JavaScript* está cheio de situações onde precisamos escrever uma pequena função que será executada em um outro lugar.
9-
=======
10-
JavaScript is full of situations where we need to write a small function that's executed somewhere else.
11-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
128

139
Por exemplo:
1410

@@ -122,18 +118,8 @@ Aqui precisamos criar as variáveis adicionais `args` e `ctx` para que a funçã
122118

123119
*Arrow functions* (funções seta):
124120

125-
<<<<<<< HEAD
126-
- Não possuem `this`.
127121
- Não possuem `arguments`.
128122
- Não podem ser chamadas com `new`.
129123
- (Elas também não possuem `super`, mas ainda não a estudamos. Veremos no capítulo <info:class-inheritance>).
130124

131125
Isso porque elas são feitas para pequenos trechos de código que não possuem seus próprios "contextos", mas sim utilizam o contexto em que estão inseridas. E elas realmente brilham nesses casos.
132-
=======
133-
- Do not have `this`
134-
- Do not have `arguments`
135-
- Can't be called with `new`
136-
- They also don't have `super`, but we didn't study it yet. We will on the chapter <info:class-inheritance>
137-
138-
That's because they are meant for short pieces of code that do not have their own "context", but rather work in the current one. And they really shine in that use case.
139-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3

0 commit comments

Comments
 (0)