From 1d9c9838c03aeb7058fe910f39c9dc1c6278d7aa Mon Sep 17 00:00:00 2001 From: mkruijt Date: Mon, 16 Oct 2017 09:41:34 +0200 Subject: [PATCH 001/304] changed homework and clean up --- Week5/MAKEME.md | 13 ------------- Week7/MAKEME.md | 2 +- Week8/MAKEME.md | 24 ++++++++---------------- 3 files changed, 9 insertions(+), 30 deletions(-) diff --git a/Week5/MAKEME.md b/Week5/MAKEME.md index 121b17f8d..bbfa48d08 100644 --- a/Week5/MAKEME.md +++ b/Week5/MAKEME.md @@ -111,19 +111,6 @@ https://api.github.com/repos/HackYourFuture/CommandLine You can see `CommandLine` in the URL. These are called "query parameters" and let us specify in detail what we want from the API. Play around with this. For example you can make two buttons that either get data for a specific repository, JavaScript or Node.js. Or go even more crazy and make users type in a search box 'JavaScript' and then send that to the API by changing the repository. - - - ``` How to hand in your homework: • Clone your existing "hyf-javascript2" Github repository. diff --git a/Week7/MAKEME.md b/Week7/MAKEME.md index bb15c9221..43b10120b 100644 --- a/Week7/MAKEME.md +++ b/Week7/MAKEME.md @@ -29,7 +29,7 @@ Give feedback on the SPA (Github API) and git branching homework of one of you f 3. [Iterate over Arrays with map](https://www.freecodecamp.com/challenges/iterate-over-arrays-with-map) -## Step 6: More, map filter reduce and => +## Step 6: More map, filter, reduce, and => 1. Say you would like to write a program that doubles the odd numbers in an array and throws away the even number. diff --git a/Week8/MAKEME.md b/Week8/MAKEME.md index fc612fe2d..46ad0599f 100644 --- a/Week8/MAKEME.md +++ b/Week8/MAKEME.md @@ -3,27 +3,19 @@ This week you will work on finishing your application so it's actually useful!! >[Here](https://github.com/HackYourFuture/JavaScript/tree/master/Week8/README.md) you find the readings you have to complete before the ninth lecture. -## The tools we used in the second lecture -- [metajs](http://int3.github.io/metajs/) -- [latentflip](http://latentflip.com/loupe/?code=Y29uc3QgcCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCl7CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgY29uc3QgZGljZVJvbGwgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDYpOwogICAgICAgIGNvbnNvbGUubG9nKGRpY2VSb2xsKTsKICAgICAgICBpZihkaWNlUm9sbCA9PT0gNikKICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcigncm9sbGVkIGEgc2l4JykpCiAgICAgICAgZWxzZQogICAgICAgICAgICByZXNvbHZlKGRpY2VSb2xsKQogICAgfSwgNTAwMCk7Cn0pOwoKCnAKICAgIC50aGVuKGZ1bmN0aW9uKHJvbGwpewogICAgICAgIGNvbnNvbGUubG9nKCdkaWNlIHJvbGxlZCBhICcgKyByb2xsKQogICAgfSkKICAgIC5jYXRjaChmdW5jdGlvbihlcnIpewogICAgICAgIAogICAgfSk7!!!PGJ1dHRvbj5DbGljayBtZSE8L2J1dHRvbj4%3D) +## Step 1: Feedback step 4 and 6 week 7 -- [Codewars](https://www.codewars.com/collections/hyf-homework-number-2) -- If you need to refresh your memory on es6 classes: [es6-classes-in-depth](https://ponyfoo.com/articles/es6-classes-in-depth) -- Also read this article on scopes & closures: [explaining-javascript-scope-and-closures](https://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/) +Give feedback on the SPA (Github API) and git branching homework of one of you fellow students. Please provide the feedback in an issue. +## Step 2: Pair programming promises challenge - +- [Codewars](https://www.codewars.com/collections/hyf-homework-number-2) +- If you need to refresh your memory on es6 classes: [es6-classes-in-depth](https://ponyfoo.com/articles/es6-classes-in-depth) +- Also read this article on scopes & closures: [explaining-javascript-scope-and-closures](https://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/) >Upload your homework in your "hyf-javascript3" Github repository. Make sure to create a new folder "week2" first. Upload your homework files inside the week2 folder and write a description for this “commit”. From 2c39c66cfbf57548fe38512282cc7684499eb28f Mon Sep 17 00:00:00 2001 From: mkruijt Date: Mon, 16 Oct 2017 10:15:55 +0200 Subject: [PATCH 002/304] added extra step --- Week8/MAKEME.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Week8/MAKEME.md b/Week8/MAKEME.md index 46ad0599f..c9e1b5c15 100644 --- a/Week8/MAKEME.md +++ b/Week8/MAKEME.md @@ -7,7 +7,11 @@ This week you will work on finishing your application so it's actually useful!! Give feedback on the SPA (Github API) and git branching homework of one of you fellow students. Please provide the feedback in an issue. -## Step 2: Pair programming promises challenge +## Step 2: FINISH ALL YOUR JAVASCRIPT HOMEWORK + +:point_up: + +## Step 3: Pair programming promises challenge >TODO From f952b9771cb262b237efd182dcdcb79bf9d470e7 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Tue, 17 Oct 2017 13:53:42 +0200 Subject: [PATCH 003/304] added table compound assignment operators --- Week1/REVIEW.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Week1/REVIEW.md b/Week1/REVIEW.md index b97e46057..44335f515 100644 --- a/Week1/REVIEW.md +++ b/Week1/REVIEW.md @@ -277,4 +277,11 @@ x += 1; x = x + 1; ``` - +|Operator| Example| Same As| +----------------------------- +|= | x = y| x = y| +|+=| x += y| x = x + y| +|-=| x -= y| x = x - y| +|*=| x *= y| x = x * y| +|/=| x /= y| x = x / y| +|%=| x %= y| x = x % y| From f25a05a5c734811a22965c19e2c359c36e8aad19 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Tue, 17 Oct 2017 19:11:09 +0200 Subject: [PATCH 004/304] added notes on homework --- Week8/MAKEME.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Week8/MAKEME.md b/Week8/MAKEME.md index c9e1b5c15..d72a0bb34 100644 --- a/Week8/MAKEME.md +++ b/Week8/MAKEME.md @@ -11,17 +11,24 @@ Give feedback on the SPA (Github API) and git branching homework of one of you f :point_up: -## Step 3: Pair programming promises challenge +## Step 3: Pair programming promises challenge ->TODO +This week you will work in a team! + +So please: + +- (one of your team mates should) Fork this repository: https://github.com/HackYourFuture/PromisessObjectsAndStringRendering +- make sure you are all collaborators on the same repository +- Follow the instructions in the REAME of the above repository +- To hand in your homework you make a PR to the existing repository _BONUS_ : Code Kata Race - [Codewars](https://www.codewars.com/collections/hyf-homework-number-2) - If you need to refresh your memory on es6 classes: [es6-classes-in-depth](https://ponyfoo.com/articles/es6-classes-in-depth) - Also read this article on scopes & closures: [explaining-javascript-scope-and-closures](https://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/) - + \ No newline at end of file From d996808d2a29ea84eb0e7dd6ff1603d9da4a13ed Mon Sep 17 00:00:00 2001 From: AbdulRahmanDbes Date: Sat, 21 Oct 2017 15:14:19 +0200 Subject: [PATCH 005/304] Add an explanation about XHttpRequest --- Week5/REVIEW.MD | 51 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/Week5/REVIEW.MD b/Week5/REVIEW.MD index 2f6486c33..6fea7bc09 100644 --- a/Week5/REVIEW.MD +++ b/Week5/REVIEW.MD @@ -11,4 +11,53 @@ this review covers: ## Callbacks -- JavaScript callback functions tutorial: https://www.youtube.com/watch?v=pTbSfCT42_M&index=17&list=WL \ No newline at end of file +- JavaScript callback functions tutorial: https://www.youtube.com/watch?v=pTbSfCT42_M&index=17&list=WL + +## XMLHTtpRequest +**XMLHttpRequest** is an objects to interact with servers. You can retrieve data from a URL without having to do a full page refresh. XMLHttpRequest is used heavily in Ajax programming. - [MDN](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) + +So what is Ajax? +**Ajax** is a method of exchanging data with a server, and updating parts of a web page without reloading the entire page. + +Let's diving a bit deeply into the code: + +First, we need to make an instance from 'XMLHttpRequest' class. +```javascript +var http = new XMLHttpRequest(); +``` +When we are doing a request it goes through 5 states: +* 0 : request not initialized. +* 1 : request has been set up. +* 2 : request has been sent. +* 3 : request is in process. +* 4 : request is complete. + +In the code below we are checking if the request is complete or not, and we check the status == 200 just to make sure that we do not get 404 error. - Take a look about [HTTP Status Code](https://httpstatuses.com). +```javascript + http.onreadystatechange = function() { + if ( http.readyState == 4 && http.status == 200) { + console.log(`Response from the server: ${http.response}`); + } +} +``` +There are methods to deal with a server like (GET, POST, UPDATE, DELETE…) + +* GET: to retrieve data from server. +* POST: to send data to server. +* UPDATE: to update data on the server. +* DELETE: to delete date from the server. + +To Initialize a request we use [open][https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/open] method. The syntax is: +```javascript +XMLHttpRequest.open(method, url, async, user, password) +``` +The parameters 'method' and 'url' are mandatory, 'user' and 'password' are optional. True is a default value for 'async'. + +```javascript +http.open("GET", URL, true/false); +``` +At the end we have to send our request to the server through [send](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send) method. In our situation we are retriving a data from the server, so we do not have to pass any parameter to the send request. + +```javascript +http.send() +``` From 0d9950381bcb79dcfb864f710b9831d02536380d Mon Sep 17 00:00:00 2001 From: AbdulRahmanDbes Date: Sat, 21 Oct 2017 15:27:22 +0200 Subject: [PATCH 006/304] add an explaination about XHR --- Week5/REVIEW.MD | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Week5/REVIEW.MD b/Week5/REVIEW.MD index 6fea7bc09..c9a17e313 100644 --- a/Week5/REVIEW.MD +++ b/Week5/REVIEW.MD @@ -13,51 +13,51 @@ this review covers: - JavaScript callback functions tutorial: https://www.youtube.com/watch?v=pTbSfCT42_M&index=17&list=WL -## XMLHTtpRequest -**XMLHttpRequest** is an objects to interact with servers. You can retrieve data from a URL without having to do a full page refresh. XMLHttpRequest is used heavily in Ajax programming. - [MDN](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) +## XMLHttpRequest +**XMLHttpRequest** is an objects to interact with servers. You can retrieve data from a URL without having to do a full page refresh. XMLHttpRequest is used heavily in Ajax programming - [MDN](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest). So what is Ajax? **Ajax** is a method of exchanging data with a server, and updating parts of a web page without reloading the entire page. -Let's diving a bit deeply into the code: +Let's diving into the code: -First, we need to make an instance from 'XMLHttpRequest' class. +First, we need to make an instance from 'XMLHttpRequest' object. ```javascript var http = new XMLHttpRequest(); ``` When we are doing a request it goes through 5 states: -* 0 : request not initialized. +* 0 : request is not initialized. * 1 : request has been set up. * 2 : request has been sent. * 3 : request is in process. * 4 : request is complete. -In the code below we are checking if the request is complete or not, and we check the status == 200 just to make sure that we do not get 404 error. - Take a look about [HTTP Status Code](https://httpstatuses.com). +In the code below we are checking if the request is complete or not, and we check the status == 200 just to make sure that we do not get 404 error - Take a look about [HTTP Status Code](https://httpstatuses.com). ```javascript http.onreadystatechange = function() { if ( http.readyState == 4 && http.status == 200) { - console.log(`Response from the server: ${http.response}`); + console.log('Response from the server: ' + http.response); } } ``` There are methods to deal with a server like (GET, POST, UPDATE, DELETE…) -* GET: to retrieve data from server. -* POST: to send data to server. -* UPDATE: to update data on the server. -* DELETE: to delete date from the server. +* GET: retrieve data from server. +* POST: send data to server. +* UPDATE: update data on the server. +* DELETE: delete date from the server. -To Initialize a request we use [open][https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/open] method. The syntax is: +To initialize a request we use [open](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/open) method. The syntax is: ```javascript -XMLHttpRequest.open(method, url, async, user, password) +XMLHttpRequest.open(method, url, async, user, password); ``` -The parameters 'method' and 'url' are mandatory, 'user' and 'password' are optional. True is a default value for 'async'. +The parameters _method_ and _url_ are mandatory, _user_ and _password_ are optional. True is a default value for _async_. ```javascript http.open("GET", URL, true/false); ``` -At the end we have to send our request to the server through [send](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send) method. In our situation we are retriving a data from the server, so we do not have to pass any parameter to the send request. +At the end we have to send our request to the server through [send](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send) method. In our situation we are retrieving a data from the server, so we do not have to pass a parameter to the send request. ```javascript -http.send() +http.send(); ``` From 19dea240770b14347c51e92d0f37ee7ade17166c Mon Sep 17 00:00:00 2001 From: AbdulRahmanDbes Date: Sun, 22 Oct 2017 18:29:59 +0200 Subject: [PATCH 007/304] Fix some English mistakes --- Week5/REVIEW.MD | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Week5/REVIEW.MD b/Week5/REVIEW.MD index c9a17e313..89e85fc3f 100644 --- a/Week5/REVIEW.MD +++ b/Week5/REVIEW.MD @@ -14,15 +14,15 @@ this review covers: - JavaScript callback functions tutorial: https://www.youtube.com/watch?v=pTbSfCT42_M&index=17&list=WL ## XMLHttpRequest -**XMLHttpRequest** is an objects to interact with servers. You can retrieve data from a URL without having to do a full page refresh. XMLHttpRequest is used heavily in Ajax programming - [MDN](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest). +**XMLHttpRequest** is an object to interact with servers. You can retrieve data from a URL without having to do a full page refresh. XMLHttpRequest is used heavily in Ajax programming - [MDN](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest). So what is Ajax? **Ajax** is a method of exchanging data with a server, and updating parts of a web page without reloading the entire page. -Let's diving into the code: +Let's dive into the code: First, we need to make an instance from 'XMLHttpRequest' object. -```javascript +```js var http = new XMLHttpRequest(); ``` When we are doing a request it goes through 5 states: @@ -32,8 +32,8 @@ When we are doing a request it goes through 5 states: * 3 : request is in process. * 4 : request is complete. -In the code below we are checking if the request is complete or not, and we check the status == 200 just to make sure that we do not get 404 error - Take a look about [HTTP Status Code](https://httpstatuses.com). -```javascript +In the code below we are checking if the request is complete or not, and we check the status == 200 just to make sure that we do not get a 404 error - Read more about it here: [HTTP Status Code](https://httpstatuses.com). +```js http.onreadystatechange = function() { if ( http.readyState == 4 && http.status == 200) { console.log('Response from the server: ' + http.response); @@ -48,16 +48,16 @@ There are methods to deal with a server like (GET, POST, UPDATE, DELETE…) * DELETE: delete date from the server. To initialize a request we use [open](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/open) method. The syntax is: -```javascript +```js XMLHttpRequest.open(method, url, async, user, password); ``` The parameters _method_ and _url_ are mandatory, _user_ and _password_ are optional. True is a default value for _async_. -```javascript +```js http.open("GET", URL, true/false); ``` At the end we have to send our request to the server through [send](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send) method. In our situation we are retrieving a data from the server, so we do not have to pass a parameter to the send request. -```javascript +```js http.send(); ``` From d6b3af2da7de33865f65b1e8d86fdc4060eb776e Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 22 Oct 2017 22:08:47 +0200 Subject: [PATCH 008/304] added link review week5 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index accb21b53..5784ef46f 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Here you can find course content and homework for the JavaScript 1,2 and 3 modul |2.|• Advanced data types [Objects]
• Conditions
• Statements vs Expressions
• Loops (for/while)
• Functions
• Naming conventions|[Reading Week 2](https://github.com/HackYourFuture/JavaScript/tree/master/Week2/README.md)|[Homework Week 2](https://github.com/HackYourFuture/JavaScript/tree/master/Week2/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week2/REVIEW.md)| |3.|• [CLI](https://github.com/HackYourFuture/CommandLine) session with Unmesh :balloon:
• Closures
• Scope
• Array Manipulations
• Basic DOM manipulations [img src, innerHTML]
• Code commenting|[Reading Week 3](https://github.com/HackYourFuture/JavaScript/tree/master/Week3)|[Homework Week 3](https://github.com/HackYourFuture/JavaScript/tree/master/Week3/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week3/REVIEW.md)| |4.|• JSON
• Code debugging using the browser
• Functions + JSON/Arrays
• Code flow (order of execution)
• (capturing user input)
• Structuring code files|[Reading Week 4](https://github.com/HackYourFuture/JavaScript/tree/master/Week4)|[JS](https://github.com/HackYourFuture/JavaScript/tree/master/Week4/MAKEME.md) + [Git Homework Week 4](https://github.com/HackYourFuture/Git/blob/master/Lecture-1.md)|Review| -|5.|• First Git Session with Unmesh :smiling_imp:
• Events
• Callbacks
• XHTTP Requests
• API calls|[Reading Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5)|[Homework Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5/MAKEME.md)|Review| +|5.|• First Git Session with Unmesh :smiling_imp:
• Events
• Callbacks
• XHTTP Requests
• API calls|[Reading Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5)|[Homework Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week5/REVIEW.md)| |6.|• Second Git Session :see_no_evil:
• Async VS Sync
• Polling
• Structure for a basic SPA
TEST :boom:|[Reading Week 6](https://github.com/HackYourFuture/JavaScript/tree/master/Week6)|[Homework Week 6](https://github.com/HackYourFuture/JavaScript/tree/master/Week6/MAKEME.md)|Review| |7.|• Third Git Session (Git Workflow :muscle:)
• Map, reduce, filter
• Arrow functions|[Reading Week 7](https://github.com/HackYourFuture/JavaScript/tree/master/Week7)|[Homework Week 7](https://github.com/HackYourFuture/JavaScript/tree/master/Week7/MAKEME.md)|Review| |8.|• (re)writing data structures (in JSON)
• Closures
• Promises
|[Reading Week 8](https://github.com/HackYourFuture/JavaScript/tree/master/Week8/README.md)|[Homework Week 8](https://github.com/HackYourFuture/JavaScript/tree/master/Week8/MAKEME.md)|Review| From da57afd7368275339f21dbddd57b1ee47aca52a3 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 22 Oct 2017 22:10:29 +0200 Subject: [PATCH 009/304] fixed file name week5 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5784ef46f..424f85685 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Here you can find course content and homework for the JavaScript 1,2 and 3 modul |2.|• Advanced data types [Objects]
• Conditions
• Statements vs Expressions
• Loops (for/while)
• Functions
• Naming conventions|[Reading Week 2](https://github.com/HackYourFuture/JavaScript/tree/master/Week2/README.md)|[Homework Week 2](https://github.com/HackYourFuture/JavaScript/tree/master/Week2/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week2/REVIEW.md)| |3.|• [CLI](https://github.com/HackYourFuture/CommandLine) session with Unmesh :balloon:
• Closures
• Scope
• Array Manipulations
• Basic DOM manipulations [img src, innerHTML]
• Code commenting|[Reading Week 3](https://github.com/HackYourFuture/JavaScript/tree/master/Week3)|[Homework Week 3](https://github.com/HackYourFuture/JavaScript/tree/master/Week3/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week3/REVIEW.md)| |4.|• JSON
• Code debugging using the browser
• Functions + JSON/Arrays
• Code flow (order of execution)
• (capturing user input)
• Structuring code files|[Reading Week 4](https://github.com/HackYourFuture/JavaScript/tree/master/Week4)|[JS](https://github.com/HackYourFuture/JavaScript/tree/master/Week4/MAKEME.md) + [Git Homework Week 4](https://github.com/HackYourFuture/Git/blob/master/Lecture-1.md)|Review| -|5.|• First Git Session with Unmesh :smiling_imp:
• Events
• Callbacks
• XHTTP Requests
• API calls|[Reading Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5)|[Homework Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week5/REVIEW.md)| +|5.|• First Git Session with Unmesh :smiling_imp:
• Events
• Callbacks
• XHTTP Requests
• API calls|[Reading Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5)|[Homework Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week5/REVIEW.MD)| |6.|• Second Git Session :see_no_evil:
• Async VS Sync
• Polling
• Structure for a basic SPA
TEST :boom:|[Reading Week 6](https://github.com/HackYourFuture/JavaScript/tree/master/Week6)|[Homework Week 6](https://github.com/HackYourFuture/JavaScript/tree/master/Week6/MAKEME.md)|Review| |7.|• Third Git Session (Git Workflow :muscle:)
• Map, reduce, filter
• Arrow functions|[Reading Week 7](https://github.com/HackYourFuture/JavaScript/tree/master/Week7)|[Homework Week 7](https://github.com/HackYourFuture/JavaScript/tree/master/Week7/MAKEME.md)|Review| |8.|• (re)writing data structures (in JSON)
• Closures
• Promises
|[Reading Week 8](https://github.com/HackYourFuture/JavaScript/tree/master/Week8/README.md)|[Homework Week 8](https://github.com/HackYourFuture/JavaScript/tree/master/Week8/MAKEME.md)|Review| From dd55c3fe16f7505f7dca89064ee5275f20ecdde9 Mon Sep 17 00:00:00 2001 From: Maartje Kruijt Date: Sun, 22 Oct 2017 22:11:14 +0200 Subject: [PATCH 010/304] Rename REVIEW.MD to REVIEW.md --- Week5/{REVIEW.MD => REVIEW.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Week5/{REVIEW.MD => REVIEW.md} (100%) diff --git a/Week5/REVIEW.MD b/Week5/REVIEW.md similarity index 100% rename from Week5/REVIEW.MD rename to Week5/REVIEW.md From 8a2f0f0b59ff26f3791009abfd31142978d0f94c Mon Sep 17 00:00:00 2001 From: mkruijt Date: Mon, 23 Oct 2017 14:31:35 +0200 Subject: [PATCH 011/304] added homework week 9 --- Week9/MAKEME.md | 50 ++++++++++++++++++++----------------------------- 1 file changed, 20 insertions(+), 30 deletions(-) diff --git a/Week9/MAKEME.md b/Week9/MAKEME.md index 57e96436f..f21555331 100644 --- a/Week9/MAKEME.md +++ b/Week9/MAKEME.md @@ -1,5 +1,7 @@ # Homework Week 9 +### Step 0: Read + >Read: - JavaScript : [Closures](http://conceptf1.blogspot.nl/2013/11/javascript-closures.html) - Everything you wanted to know about [JavaScript scope](https://toddmotto.com/everything-you-wanted-to-know-about-javascript-scope/) @@ -9,16 +11,15 @@ - More about [closures](https://www.reddit.com/r/learnjavascript/comments/1v6n8p/closure_explain_likei_am_in_high_school/?st=ixsp0mbe&sh=5526d150) - A VERY popular [StackOverflow article](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work) +### Step 1: Scope and Closures - -> Make: -1. Let's continue to learn a little more about scope and Closures. +> Let's continue to learn a little more about scope and Closures. 2. What will be the output of the following code - and more importantly - WHY? ```js -for (var i = 0; i < 3; i++) { +for (let i = 0; i < 3; i++) { setTimeout(function() { alert(i); }, 1000 + i); } ``` @@ -26,7 +27,7 @@ for (var i = 0; i < 3; i++) { 3. Write a function that would allow you to do this: ```js -var addSix = createBase(6); +let addSix = createBase(6); addSix(10); // returns 16 addSix(21); // returns 27 ``` @@ -42,8 +43,8 @@ Don't cheat - but if you get stuck ... http://stackoverflow.com/questions/750486 ``` -Rewrite to Async: +5. Rewrite the code below to Async: ```js 1. -var sum = calculateSum(2, 6); +let sum = calculateSum(2, 6); console.log(sum); 2. -var results = $.getJSON('http://myapi.com'); +let results = $.getJSON('http://myapi.com'); showResults(results); 3. -var sum = calculateSum(2, 6); +let sum = calculateSum(2, 6); if (sum > 8) { console.log('larger than 8'); } 4. -var data = $.getJSON('http://myapi.com'); +let data = $.getJSON('http://myapi.com'); data = data.map(function (x) { return x * 8; }); writeDataToFile(data); ``` -4. You will need to create an HTML document out of the below snippet to run the below code. A hint - the code is syntactically correct but doesn't do what you would expect. Can you see why and fix it? +### Step 2: Feedback -TODO !!! +- Create at least 2 issues (bug / feature / code improvement) on another teams github repository. Do this in pairs. +- Solve the issue proposed by another students in your github repo. More info [here](https://hackyourfuture.slack.com/files/michahell/F31BX1XT6/Merging_a_local_branch_into_master) -Choose two "GET" API endpoints from http://reqres.in -Use $.getJSON to load data from those two endpoints -Display the data on your web page. -It should not matter which endpoint is loaded first, the data should always look the same (you can add "?delay=" after the endpoint to simulate a delay). +## Step 3: Pair programming homework -• Create at least 1 issue (bug / feature / code improvement) on another students github repository. Do this in pairs. -• solve the issue proposed by another student in your github repo. More info [here](https://hackyourfuture.slack.com/files/michahell/F31BX1XT6/Merging_a_local_branch_into_master) +You will complete the TicTacToe game we started building in class. The code we build in class is available here: *(will be here by the end of the day)*. +One of your teammates should fork the repo. Work in this repository *together* so you can see who wrote which code. Make a Pull Request to hand in this part of the homework. - -## Optional homework -``` -TicTacToe game - -https://github.com/HackYourFuture/TicTacToeTDD -https://github.com/HackYourFuture/OOP-Student-and-Teacher - -rewatch the Hangouts session here: https://www.youtube.com/watch?v=oc9ogCJz9rYs -``` + >Upload your homework in your "hyf-javascript3" Github repository. Make sure to create a new folder "week3" first. Upload your homework files inside the week3 folder and write a description for this “commit”. From d59c1204989823cda133054996cdc07bec464ab8 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Mon, 23 Oct 2017 14:33:57 +0200 Subject: [PATCH 012/304] added headers --- Week9/MAKEME.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Week9/MAKEME.md b/Week9/MAKEME.md index f21555331..500680334 100644 --- a/Week9/MAKEME.md +++ b/Week9/MAKEME.md @@ -1,6 +1,6 @@ # Homework Week 9 -### Step 0: Read +## Step 0: Read >Read: - JavaScript : [Closures](http://conceptf1.blogspot.nl/2013/11/javascript-closures.html) @@ -11,7 +11,7 @@ - More about [closures](https://www.reddit.com/r/learnjavascript/comments/1v6n8p/closure_explain_likei_am_in_high_school/?st=ixsp0mbe&sh=5526d150) - A VERY popular [StackOverflow article](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work) -### Step 1: Scope and Closures +## Step 1: Scope and Closures > Let's continue to learn a little more about scope and Closures. @@ -83,7 +83,7 @@ writeDataToFile(data); ``` -### Step 2: Feedback +## Step 2: Feedback - Create at least 2 issues (bug / feature / code improvement) on another teams github repository. Do this in pairs. - Solve the issue proposed by another students in your github repo. More info [here](https://hackyourfuture.slack.com/files/michahell/F31BX1XT6/Merging_a_local_branch_into_master) From de5552fae258755f1ca8833c72506962ecce388e Mon Sep 17 00:00:00 2001 From: mkruijt Date: Tue, 24 Oct 2017 11:56:24 +0200 Subject: [PATCH 013/304] added link to repo --- Week9/MAKEME.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Week9/MAKEME.md b/Week9/MAKEME.md index 500680334..b5203ca60 100644 --- a/Week9/MAKEME.md +++ b/Week9/MAKEME.md @@ -90,8 +90,8 @@ writeDataToFile(data); ## Step 3: Pair programming homework -You will complete the TicTacToe game we started building in class. The code we build in class is available here: *(will be here by the end of the day)*. -One of your teammates should fork the repo. Work in this repository *together* so you can see who wrote which code. Make a Pull Request to hand in this part of the homework. +You will complete the TicTacToe game we started building in class. The code we build in class is available here: https://github.com/HackYourFuture/TicTacToeTDD. +One of your teammates should fork the above repo. Work in this repository *together* so you can see who wrote which code. Make a Pull Request to hand in this part of the homework. From 6415aba26cadb73054970bf16a351d8edbc2b3f2 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Tue, 24 Oct 2017 16:09:55 +0200 Subject: [PATCH 014/304] test homework week1 --- README.md | 2 +- Week1/MAKEME.md | 109 ++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 92 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index accb21b53..53a63d43f 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Here you can find course content and homework for the JavaScript 1,2 and 3 modul |Week|Topic|Read|Homework|Review| |----|-----|----|--------|------| |0.|Preparation for your first JavaScript session|[Pre-reading](https://github.com/HackYourFuture/JavaScript/tree/master/Week0) + [CLI Reading Week 1](https://github.com/HackYourFuture/CommandLine/blob/master/Lecture-1.md)|-| -|1.|• [CLI](https://github.com/HackYourFuture/CommandLine) session with Unmesh :heart:
• Intro JavaScript (What is it, where can you use it for)
• Variables [var, let, const]
• Basic Data types [Strings, Numbers, Arrays]
• Operators|[Reading Week 1](https://github.com/HackYourFuture/JavaScript/tree/master/Week1/README.md) | [Homework Week 1](https://github.com/HackYourFuture/JavaScript/tree/master/Week1/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week1/REVIEW.md)| +|1.|• [CLI](https://github.com/HackYourFuture/CommandLine) session with Unmesh :heart:
• Intro JavaScript (What is it, where can you use it for)
• Variables [var, let, const]
• Basic Data types [Strings, Numbers, Arrays, Booleans]
• Operators|[Reading Week 1](https://github.com/HackYourFuture/JavaScript/tree/master/Week1/README.md) | [Homework Week 1](https://github.com/HackYourFuture/JavaScript/tree/master/Week1/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week1/REVIEW.md)| |2.|• Advanced data types [Objects]
• Conditions
• Statements vs Expressions
• Loops (for/while)
• Functions
• Naming conventions|[Reading Week 2](https://github.com/HackYourFuture/JavaScript/tree/master/Week2/README.md)|[Homework Week 2](https://github.com/HackYourFuture/JavaScript/tree/master/Week2/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week2/REVIEW.md)| |3.|• [CLI](https://github.com/HackYourFuture/CommandLine) session with Unmesh :balloon:
• Closures
• Scope
• Array Manipulations
• Basic DOM manipulations [img src, innerHTML]
• Code commenting|[Reading Week 3](https://github.com/HackYourFuture/JavaScript/tree/master/Week3)|[Homework Week 3](https://github.com/HackYourFuture/JavaScript/tree/master/Week3/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week3/REVIEW.md)| |4.|• JSON
• Code debugging using the browser
• Functions + JSON/Arrays
• Code flow (order of execution)
• (capturing user input)
• Structuring code files|[Reading Week 4](https://github.com/HackYourFuture/JavaScript/tree/master/Week4)|[JS](https://github.com/HackYourFuture/JavaScript/tree/master/Week4/MAKEME.md) + [Git Homework Week 4](https://github.com/HackYourFuture/Git/blob/master/Lecture-1.md)|Review| diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index d02722eb4..8ecb48136 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -35,33 +35,106 @@ Write commands to do following: ## Step 2: JavaScript -> For all the following exercises create a new .js file. Try to find a proper name for each file or make a small comment about what it does inside for future reference +> For all the following exercises create a new .js file. Try to find a proper name for each file or make a small comment about what it does inside for future reference. 1. Declare a variable `x` and initialize it with an integer. - -2. How do you round the number 7.25, to the nearest integer? - -3. Create a array called `colors` with the strings red, green and blue inside. - -4. How can you find the length of the string you just created? - -5. Write a program that checks the types of two variables and prints out `SAME TYPE` if they are the same type. -For example: + 1.1 First, _declare_ your variable `x`. + 1.2 Add a console.log statement that explains what _you think_the value of `x` is, like in this example: + ```js + // TODO -> here you initialize your variable + console.log('the value of my variable x will be: whateverYouThinkItWillLog') + ``` + 1.3 Add a console.log statement that logs the value of `x` + 1.4 Now _initialize_ your variable `x` with an integer + 1.5 Now add a console.log statement that explains what _you think_ the value of `x` is. + 1.6 Add a console.log statement that logs the value of `x`. + Steps to be taken: + + ```js + // TODO -> here you declare your variable + console.log('the value of x will be: whateverYouThinkItWillLog') + // TODO -> log the actual value of x + // TODO -> here you initialize your variable + console.log('the value of x will be: whateverYouThinkItWillLog') + // TODO -> log value of x again + ``` + +2. Declare a variable `y` and assign a string to it. + 2.1 Write a console.log statement in which explain what you think the value of the string is + 2.2 Now console.log the variable `y`. + 2.3 Now assign a new string to the variable `y` + 2.4 Just like you did before write a console.log statement that explains what you think will be logged to the console. + 2.5 Now console.log `y` again. + ```js + // TODO -> here you declare AND assign your string + console.log('the value of my string will be: whateverYouThinkItWillLog') + // TODO -> log the actual value of the string to the console + // TODO -> assign a new value to your variable x + console.log('the value of my string will be: whateverYouThinkItWillLog') + // TODO -> log the actual value of the string to the console + ``` + +3. How do you round the number 7.25, to the nearest integer? + 3.1 Declare a variable `z` and assign the number 7.25 to it. + 3.2 Console.log `z`. + 3.3 Now round `z` to the nearest integer. + 3.4 Console.log `z` again. + +4. Arrays! + 4.1 Declare an empty array (you can decide on how to call it yourself). + 4.2 Write a console.log statement in which explain what you think the value of the array is. + 4.3 Console.log your array. + 4.4 Create an array that has your favorite animals inside + 4.5 Log your array + 4.6 Ads Daan's favorite animal (baby pig) to the existing array + 4.7 Log your new array! + 4.8 Now add Gijs's favorite animal to the array (moose), but make sure it will be placed after the first animal that you have placed in your array. + 4.9 Write a console.log statement in which explain what _you think_ the new value of the array is. + 4.10 Log your new new array! + 4.11 Log the length of the array, add a message: "The array has a length of: "(here you should show the length of the array) + 4.12 Eyad does not like giraffes, delete this animal from the array + 4.13 Again log your new array. + 4.14 Now if unlike Gijs, you don't like mooses and you want to delete it from the array, but you don't know the position or the `index` of the item in the array, how can you find it? + 4.15 Log the index of moose to the console. Add a message so it says: "The item you are looking for is at index: " (here you should show the index of the item) + +5. More strings + 5.1 Let's consider the following string: `let mystring = "this,is,a,test"`. + 5.2 Add the string to your file and console.log it. + 5.3 Find a way to get the length of `mystring`. + 5.4 Console.log the length of `mystring`. + 5.5 The comma's make that the sentence is quite hard to read. Find a way to remove the comma's from the sting and replace them with a spaces + 5.6 Console.log `mystring` to see if you succeeded. + + +7. Write a program that checks the types of two variables and prints out `SAME TYPE` if they are the same type. + 6.1 First declare at least four variables and assign them with different data types. + 6.2 For each variable write a console log statement that that logs the value + ```js + let foo = 3 + console.log('My the value of my variable foo is: ' + foo) + ``` + 6.3 Now write a console.log statement weiring you first explain what you think the _type_ of your variables is. + 6.4 Now use `typeof` to log the actual _type_ of your variables. + 6.5 Now compare the types of your different variables with one another. + 6.6 Make sure to also show a message when the variables you are comparing are not the same type. + For example: ```js - let x = 9; - let y = 'Hello'; + let x = 9 + let y = 'Hello' if () { - console.log('SAME TYPE'); + console.log('SAME TYPE') } - + // TODO -> add a way of giving feedback if your variables don't have the same type ``` -6. If `x` equals 7, and the only other statement is `x = x % 3`, what would be the new value of `x`? +8. If `x` equals 7, and the only other statement is `x = x % 3`, what would be the new value of `x`? + 6.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. -7. Write a program to answer the following questions: -* Can you store multiple types in an array? Numbers and strings? -* Can you compare inifities? (Not in Eyad's world) - does 6/0 == 10/0? How can you test this? +9. Write a program to answer the following questions: + 7.1 Can you store multiple types in an array? Numbers and strings? + 7.2 Can you compare inifities? (Not in Eyad's world) - does 6/0 == 10/0? How can you test this? + 7.3 Add console.log statements to the above program's in which you show that you understand the concepts (just like you've done in the above assignments). ### Step 3: **Some freeCodeCamp challenges (10 hours):** From 7653a3e7d813536348fb742b57128efa3e917553 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Tue, 24 Oct 2017 16:35:09 +0200 Subject: [PATCH 015/304] added video's to week0 --- Week0/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Week0/README.md b/Week0/README.md index 046590af1..fda2d9a3c 100644 --- a/Week0/README.md +++ b/Week0/README.md @@ -5,12 +5,18 @@ In week one we will discuss the following topics: • The first part of the day Unmesh will talk about CLI (Command Line Interface) • Intro JavaScript (What is it, where can you use it for) • Variables [var, let, const] -• Basic Data types [Strings, Numbers, Arrays] +• Basic Data types [Strings, Numbers, Arrays, Booleans] • Operators ``` ### Here are resources that we like you to read as a preparation for the coming lecture: +Please watch the following parts of the course, [Programming Foundations Fundamentals](https://www.lynda.com/Programming-Foundations-tutorials/Welcome/83603/90426-4.html) on Lynda.com (if you don't have access to Lynda yet ask Gijs): + 0. Introduction + 1. Programming Basics + 2. Core Programming Syntax + 3. Variables and Data Types + - Read this ~ http://speakingjs.com/es5/ch01.html read up to and including the *Strings* chapter (it’s okay if you don’t understand all of it yet, we will cover these concepts in class as well. Do make sure to write or document the questions you have so we can discuss them in class) - Read the entire JavaScript Introduction at MDN~ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Introduction From 5400f9b3ed588928c65ada0ea7fafd9e514b64ab Mon Sep 17 00:00:00 2001 From: Maartje Kruijt Date: Tue, 24 Oct 2017 16:38:43 +0200 Subject: [PATCH 016/304] fixed list --- Week0/README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Week0/README.md b/Week0/README.md index fda2d9a3c..30ee19f77 100644 --- a/Week0/README.md +++ b/Week0/README.md @@ -12,10 +12,12 @@ In week one we will discuss the following topics: ### Here are resources that we like you to read as a preparation for the coming lecture: Please watch the following parts of the course, [Programming Foundations Fundamentals](https://www.lynda.com/Programming-Foundations-tutorials/Welcome/83603/90426-4.html) on Lynda.com (if you don't have access to Lynda yet ask Gijs): - 0. Introduction - 1. Programming Basics - 2. Core Programming Syntax - 3. Variables and Data Types + +Only watch the below chapters: +0. Introduction +1. Programming Basics +2. Core Programming Syntax +3. Variables and Data Types - Read this ~ http://speakingjs.com/es5/ch01.html read up to and including the *Strings* chapter (it’s okay if you don’t understand all of it yet, we will cover these concepts in class as well. Do make sure to write or document the questions you have so we can discuss them in class) From b1d3c3e64610872d8f519d946ca71d27e34d6be1 Mon Sep 17 00:00:00 2001 From: Maartje Kruijt Date: Tue, 24 Oct 2017 16:39:06 +0200 Subject: [PATCH 017/304] fixed list --- Week0/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Week0/README.md b/Week0/README.md index 30ee19f77..e45bb72ad 100644 --- a/Week0/README.md +++ b/Week0/README.md @@ -14,6 +14,7 @@ In week one we will discuss the following topics: Please watch the following parts of the course, [Programming Foundations Fundamentals](https://www.lynda.com/Programming-Foundations-tutorials/Welcome/83603/90426-4.html) on Lynda.com (if you don't have access to Lynda yet ask Gijs): Only watch the below chapters: + 0. Introduction 1. Programming Basics 2. Core Programming Syntax From 987a0e72c9997e2895bf0dd78df1417ffb9a46ec Mon Sep 17 00:00:00 2001 From: mkruijt Date: Wed, 25 Oct 2017 15:11:52 +0200 Subject: [PATCH 018/304] moved some assignments to week3 also added some assignments, + implemented feedback from Jim about ;'s and language --- Week0/README.md | 15 ++++- Week1/MAKEME.md | 143 ++++++++++++++++++++++++------------------------ Week3/MAKEME.md | 31 ++++++++++- 3 files changed, 113 insertions(+), 76 deletions(-) diff --git a/Week0/README.md b/Week0/README.md index 046590af1..27dbfb710 100644 --- a/Week0/README.md +++ b/Week0/README.md @@ -5,12 +5,25 @@ In week one we will discuss the following topics: • The first part of the day Unmesh will talk about CLI (Command Line Interface) • Intro JavaScript (What is it, where can you use it for) • Variables [var, let, const] -• Basic Data types [Strings, Numbers, Arrays] +• Basic Data types [Strings, Numbers, Arrays, Booleans] • Operators ``` + +## How to get started +1. Download and install the latest Current version of NodeJS - from https://nodejs.org/en/download/current/ +To test that it was installed and running properly, go to your terminal and run the command: node -v You should get the node version printed on your terminal, for example, v8.8.0 + ### Here are resources that we like you to read as a preparation for the coming lecture: +Please watch the following parts of the course, [Programming Foundations Fundamentals](https://www.lynda.com/Programming-Foundations-tutorials/Welcome/83603/90426-4.html) on Lynda.com (if you don't have access to Lynda yet ask Gijs): + +Only watch the below chapters: +0. Introduction +1. Programming Basics +2. Core Programming Syntax +3. Variables and Data Types + - Read this ~ http://speakingjs.com/es5/ch01.html read up to and including the *Strings* chapter (it’s okay if you don’t understand all of it yet, we will cover these concepts in class as well. Do make sure to write or document the questions you have so we can discuss them in class) - Read the entire JavaScript Introduction at MDN~ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Introduction diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index 8ecb48136..d28d54f23 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -2,8 +2,6 @@ >[Here](https://github.com/HackYourFuture/JavaScript/tree/master/Week1/README.md) you find the readings you have to complete before the second lecture. -We covered a bit of command line usage in the first class and got a program running which is great. If you need a refresher for the command line please have a look here: https://github.com/HackYourFuture/CommandLine - ## Before you start with the homework: 1. Watch: [What is programming](https://www.khanacademy.org/computing/computer-programming/programming/intro-to-programming/v/programming-intro) Just watch the 2 min video, you do not have to do the entire JavaScript course (It could be useful later on though). @@ -15,6 +13,8 @@ We covered a bit of command line usage in the first class and got a program runn ## Step 1: Command Line +>We covered a bit of command line usage in the first class and got a program running which is great. If you need a refresher for the command line please have a look here: https://github.com/HackYourFuture/CommandLine + 1. Create a `.js` file that prints `Hello` when you run it from the command line. (Hint: `node` is the program that can run your JavaScript files.) ``` @@ -35,106 +35,105 @@ Write commands to do following: ## Step 2: JavaScript -> For all the following exercises create a new .js file. Try to find a proper name for each file or make a small comment about what it does inside for future reference. +> For all the following exercises create a new .js file. Try to find a proper name for each file or make a small comment about what it does inside for future reference. All these + +1. Write a console.log statement saying "Hello World!" for each language that you know. + +2. Consider the following code: +``` +console.log('I'm awesome'); +``` + 2.1 Copy the code in your `.js` file and run it. You will see that you will get a SyntaxError. Find a solution for this error, Hint read the error message carefully, it also gives an indication of where the problem is. -1. Declare a variable `x` and initialize it with an integer. - 1.1 First, _declare_ your variable `x`. - 1.2 Add a console.log statement that explains what _you think_the value of `x` is, like in this example: +3. Declare a variable `x` and initialize it with an integer. + 3.1 First, _declare_ your variable `x`. + 3.2 Add a console.log statement that explains that explains in words what _you think_the value of `x` is, like in this example: ```js // TODO -> here you initialize your variable - console.log('the value of my variable x will be: whateverYouThinkItWillLog') + console.log('the value of my variable x will be: whateverYouThinkItWillLog'); ``` - 1.3 Add a console.log statement that logs the value of `x` - 1.4 Now _initialize_ your variable `x` with an integer - 1.5 Now add a console.log statement that explains what _you think_ the value of `x` is. - 1.6 Add a console.log statement that logs the value of `x`. + 3.3 Add a console.log statement that logs the value of `x` + 3.4 Now _initialize_ your variable `x` with an integer + 3.5 Now add a console.log statement that explains what _you think_ the value of `x` is. + 3.6 Add a console.log statement that logs the value of `x`. Steps to be taken: ```js // TODO -> here you declare your variable - console.log('the value of x will be: whateverYouThinkItWillLog') + console.log('the value of x will be: whateverYouThinkItWillLog'); // TODO -> log the actual value of x // TODO -> here you initialize your variable - console.log('the value of x will be: whateverYouThinkItWillLog') + console.log('the value of x will be: whateverYouThinkItWillLog'); // TODO -> log value of x again ``` -2. Declare a variable `y` and assign a string to it. - 2.1 Write a console.log statement in which explain what you think the value of the string is - 2.2 Now console.log the variable `y`. - 2.3 Now assign a new string to the variable `y` - 2.4 Just like you did before write a console.log statement that explains what you think will be logged to the console. - 2.5 Now console.log `y` again. +4. Declare a variable `y` and assign a string to it. + 4.1 Write a console.log statement in which you explain in words what _you think_ the value of the string is + 4.2 Now console.log the variable `y`. + 4.3 Now assign a new string to the variable `y` + 4.4 Just like you did before write a console.log statement that explains in words what you think will be logged to the console. + 4.5 Now console.log `y` again. ```js // TODO -> here you declare AND assign your string - console.log('the value of my string will be: whateverYouThinkItWillLog') + console.log('the value of my string will be: whateverYouThinkItWillLog'); // TODO -> log the actual value of the string to the console // TODO -> assign a new value to your variable x - console.log('the value of my string will be: whateverYouThinkItWillLog') + console.log('the value of my string will be: whateverYouThinkItWillLog'); // TODO -> log the actual value of the string to the console ``` -3. How do you round the number 7.25, to the nearest integer? - 3.1 Declare a variable `z` and assign the number 7.25 to it. - 3.2 Console.log `z`. - 3.3 Now round `z` to the nearest integer. - 3.4 Console.log `z` again. - -4. Arrays! - 4.1 Declare an empty array (you can decide on how to call it yourself). - 4.2 Write a console.log statement in which explain what you think the value of the array is. - 4.3 Console.log your array. - 4.4 Create an array that has your favorite animals inside - 4.5 Log your array - 4.6 Ads Daan's favorite animal (baby pig) to the existing array - 4.7 Log your new array! - 4.8 Now add Gijs's favorite animal to the array (moose), but make sure it will be placed after the first animal that you have placed in your array. - 4.9 Write a console.log statement in which explain what _you think_ the new value of the array is. - 4.10 Log your new new array! - 4.11 Log the length of the array, add a message: "The array has a length of: "(here you should show the length of the array) - 4.12 Eyad does not like giraffes, delete this animal from the array - 4.13 Again log your new array. - 4.14 Now if unlike Gijs, you don't like mooses and you want to delete it from the array, but you don't know the position or the `index` of the item in the array, how can you find it? - 4.15 Log the index of moose to the console. Add a message so it says: "The item you are looking for is at index: " (here you should show the index of the item) - -5. More strings - 5.1 Let's consider the following string: `let mystring = "this,is,a,test"`. - 5.2 Add the string to your file and console.log it. - 5.3 Find a way to get the length of `mystring`. - 5.4 Console.log the length of `mystring`. - 5.5 The comma's make that the sentence is quite hard to read. Find a way to remove the comma's from the sting and replace them with a spaces - 5.6 Console.log `mystring` to see if you succeeded. - - -7. Write a program that checks the types of two variables and prints out `SAME TYPE` if they are the same type. - 6.1 First declare at least four variables and assign them with different data types. - 6.2 For each variable write a console log statement that that logs the value +5. How do you round the number 7.25, to the nearest integer? + 5.1 Declare a variable `z` and assign the number 7.25 to it. + 5.2 Console.log `z`. + 5.3 Declare another variable `a` that has the value of z but rounded to the nearest integer. + 5.4 Console.log `a` + 5.5 So now we have `z` and `a` find a way to compare the two values and store the highest of the two in a new variable. + 5.6 Console.log the highest value. + +6. Arrays! + 6.1 Declare an empty array (you can decide on how to call it yourself, but read on a bit here and see if you can find a good name that exactly describes what this variable will hold). + 6.2 Write a console.log statement that explains in words what you think the value of the array is. + 6.3 Console.log your array. + 6.4 Create an array that has your favorite animals inside + 6.5 Log your array + 6.6 Add a statement that adds Daan's favorite animal (baby pig) to the existing array + 6.7 Log your new array! + +7. More strings + 7.1 Let's consider the following string: `let myString = "this,is,a,test"`. + 7.2 Add the string to your file and console.log it. + 7.3 Find a way to get the length of `myString`. + 7.4 Console.log the length of `myString`. + +8. Write a program that checks the types of two variables and prints out `SAME TYPE` if they are the same type. + 8.1 First declare at least four variables and assign them different data types. + 8.2 For each variable write a `console.log` statement that logs the value ```js - let foo = 3 - console.log('My the value of my variable foo is: ' + foo) + let foo = 3; + console.log('The value of my variable foo is: ' + foo); ``` - 6.3 Now write a console.log statement weiring you first explain what you think the _type_ of your variables is. - 6.4 Now use `typeof` to log the actual _type_ of your variables. - 6.5 Now compare the types of your different variables with one another. - 6.6 Make sure to also show a message when the variables you are comparing are not the same type. + 8.3 Now write a console.log statement wherein you first explain in words what you think the _type_ of your variables is. + 8.4 Now use `typeof` to log the actual _type_ of your variables. + 8.5 Now compare the types of your different variables with one another. + 8.6 Make sure to also show a message when the variables you are comparing are not the same type. For example: ```js - let x = 9 - let y = 'Hello' + let x = 9; + let y = 'Hello'; if () { - console.log('SAME TYPE') + console.log('SAME TYPE'); } // TODO -> add a way of giving feedback if your variables don't have the same type ``` -8. If `x` equals 7, and the only other statement is `x = x % 3`, what would be the new value of `x`? - 6.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. +9. If `x` equals 7, and the only other statement is `x = x % 3`, what would be the new value of `x`? + 9.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. -9. Write a program to answer the following questions: - 7.1 Can you store multiple types in an array? Numbers and strings? - 7.2 Can you compare inifities? (Not in Eyad's world) - does 6/0 == 10/0? How can you test this? - 7.3 Add console.log statements to the above program's in which you show that you understand the concepts (just like you've done in the above assignments). +10. Write a program to answer the following questions: + 10.1 Can you store multiple types in an array? Numbers and strings? + 10.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this? + 10.3 Add console.log statements to the above program's in which you show that you understand the concepts (just like you've done in the above assignments). ### Step 3: **Some freeCodeCamp challenges (10 hours):** @@ -156,7 +155,7 @@ steps: ``` ### Hint -If you solve the FreeCodeCamp challenges and they are new concepts to you and you would like to take a look at them later on in the program, Copy your answers from FCC in a .js file and upload them to Github in a repository for future reference. In this way you build your own little documentation, if you look back at them first try to understand what it does before you run them. +If you solve the FreeCodeCamp challenges and they are new concepts to you and you would like to take a look at them later on in the program, Copy your answers from FCC in a `.js` file and upload them to Github in a repository for future reference. In this way you build your own little documentation, if you look back at them first try to understand what it does before you run them. :star: Additional resources and review: [here](https://github.com/HackYourFuture/JavaScript/tree/master/Week1/REVIEW.md) (work in progress):star: diff --git a/Week3/MAKEME.md b/Week3/MAKEME.md index 2ed148bc1..7cac5b61c 100644 --- a/Week3/MAKEME.md +++ b/Week3/MAKEME.md @@ -16,9 +16,34 @@ Your fellow students have provided you with feedback in Trello. Your teachers ha ## Step 2: Reorganize your Github -Your Github should contain two repositories called hyf-javascript1 and hyf-commandline . Inside the JavaScript repository you should have three folders, called week1, week2, and week3 (or something similar). Inside these folders you should have the different assignments (a file per exercises). Ty and find proper names for the exercises that reflect somehow what is going on in the code. Avoid using spaces in your file names, this makes it harder to "run" you files. Also make sure that all your JavaScript files have a .js extension. +Your Github should contain two repositories called hyf-javascript1 and hyf-commandline . Inside the JavaScript repository you should have three folders, called week1, week2, and week3 (or something similar). Inside these folders you should have the different assignments (a file per exercises). Ty and find proper names for the exercises that reflect somehow what is going on in the code. Avoid using spaces in your file names, this makes it harder to "run" you files. Also make sure that all your JavaScript files have a `.js` extension. -## Step 3: Custom DOM manipulation challenge :mortar_board: +## Step 3: String and Array challenges + +1. Strings! + 1.1 Let's consider the following string: `let myString = "hello,this,is,a,difficult,to,read,sentence"` + 1.2 Add the string to your file and console.log it. + 1.4 Console.log the length of `myString`. + 1.5 The comma's make that the sentence is quite hard to read. Find a way to remove the comma's from the sting and replace them with a spaces + 1.6 Console.log `myString` to see if you succeeded. + +2. Arrays! + consider the following array: +```js +let favoriteAnimals = ['blowfish', 'capricorn', 'giraffe']; +``` + 2.6 Add a statement that adds Mauro's favorite animal (turtle) to the existing array + 2.7 Log your new array! + 2.8 Now add Jim's favorite animal to the array, its a meerkat, but make sure it will be placed after 'blowfish' and before 'capricorn'. + 2.9 Write a console.log statement that explains in words _you think_ the new value of the array is. + 2.10 Log your new new array! + 2.11 Log the length of the array, add a message: "The array has a length of: "(here you should show the length of the array) + 2.12 Jason does not like giraffes, delete this animal from the array + 2.13 Again log your new array. + 2.14 Now if unlike Jim, you don't like meerkats and you want to delete it from the array, but you don't know the position or the `index` of the item in the array, how can you find it? + 2.15 Log the index of meerkat to the console. Add a message so it says: "The item you are looking for is at index: " (here you should show the index of the item) + +## Step 4: Custom DOM manipulation challenge :mortar_board: 1. Open a new js file and start by declaring an array that contains 10 strings. These strings should be of book titles you have read (or made up) and be lowercase without spaces or special characters so that you can use these later as Id's. (Example: Harry Potter's - The Chamber of Secrets -> `harry_potter_chamber_secrets`). @@ -42,7 +67,7 @@ How to hand in your homework: • Place the link to your repository folder in Trello. ``` -## Step 4: **FreeCodeCamp challenges:** +## Step 5: **FreeCodeCamp challenges:** - https://www.freecodecamp.com/challenges/declare-javascript-objects-as-variables - https://www.freecodecamp.com/challenges/make-instances-of-objects-with-a-constructor-function From 694e9996f8c4db24cb836d0752892ee945cac991 Mon Sep 17 00:00:00 2001 From: Jim Cramer Date: Fri, 27 Oct 2017 12:57:06 +0200 Subject: [PATCH 019/304] Added string methods; explicit use of 'value' as a concept --- Week1/REVIEW.md | 133 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 89 insertions(+), 44 deletions(-) diff --git a/Week1/REVIEW.md b/Week1/REVIEW.md index 44335f515..6a6c96c5c 100644 --- a/Week1/REVIEW.md +++ b/Week1/REVIEW.md @@ -2,10 +2,10 @@ ``` This review covers: -• some commands thought by Unmesh in class today +• some commands taught by Unmesh in class today • Intro JavaScript (What is it, where can you use it for) -• Variables [var, let, const] -• Basic Data types [Strings, Numbers, Arrays] +• Variables [var, let, const] +• Basic Data types [Strings, Numbers, Arrays] • Operators ``` @@ -40,7 +40,7 @@ man : Display manual of the COMMAND ## Variables -A "variable" is a place where you can store information, such as a string, or a number. New variables in JavaScript are declared using one of three keywords: let, const, or var. +A "variable" is a place where you can store information, such as a string, or a number. A variable has a _name_ (that you choose) and a _value_. New variables in JavaScript are declared using one of three keywords: `let`, `const`, or `var`. > Think of variables names like **labels** on boxes, while the value of the variable are the **contents** of the box - you could change the contents of a box and leave the label intact, the contents of the boxes can have different types, the boxes should have good labels (a box of books being labeled pens would be very confusing), > @@ -50,7 +50,7 @@ A "variable" is a place where you can store information, such as a string, or a ### Variable declaration -Variables are "declared" using the `var`, `let` or `const` keyword: +Variables are "declared" using the `var`, `let` or `const` keyword. In the following example three variables are declared with the names `x`, `foo` and `bar`. ```js var x; @@ -58,12 +58,18 @@ let foo; const bar; ``` +Note that the chosen names in this example are meaningless (perhaps with the exception of `x`, for instance as part of a mathematical program). You should make an effort to always choose names that best describe what you intend this variable to hold. + +### var + +Prior to JavaScript ES6 the `var` keyword was the only way to declare a variable. ES6 introduced two new keywords, `let` and `const` for declaring variables. They improve on how the older `var` declaration works (this involves the concept of "scope" that you will learn about in the third lecture). In HackYourFuture we encourage you to use the more modern `let` and `const` keywords over `var`, but you will often come across `var` in existing books, software libraries and examples on the Internet, so you should understand `var` too. + ### let and const - read about [let](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let) - read about [const](https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Statements/const) -- [let vs const] (http://wesbos.com/let-vs-const/) +- [let vs const] (http://wesbos.com/let-vs-const/) -Here, we say: "declare variable x and initialize it with the integer (number) 5". +Here, we say: "declare variable x and initialize it with the integer (number) 6". ```js let foo; // declare variable `foo` @@ -79,9 +85,9 @@ foo = 4; // change variable `foo` ``` -## Variable types +## Value types -All variables have a type. In our example above, the variable `x` is a `number`. JavaScript supports the following types: +Values are the "things" that you assign to a variable. All values have a type. In our example above, the variable `x` is assigned a value of type `number`. JavaScript supports the following types: * `string`, e.g. "HackYourFuture" * `number`, e.g. 5, or 10.6 @@ -90,10 +96,11 @@ All variables have a type. In our example above, the variable `x` is a `number`. * `object`, e.g. `{name: 'John', age: 24}`, or the special object `null` * `function`, e.g. `function () { return 4; }` * `symbol` +* `undefined` -In addition, a variable may be `undefined`. This is also a special type. +If you declare a variable without specifying its value, then, by default its value is `undefined`. -To get the type of a variable, use the following code: +To get the type of a value assigned to a variable, use the following code: ```js let x = 5; @@ -107,13 +114,13 @@ let arr = [1, 2, 3]; let typeOfArr = typeof arr; // -> 'object' ``` -However, in our communication, we will call these variables arrays. +However, in practice we will call these variables arrays. -### Null & undefined +### Null and undefined -The values `null` and `undefined` are very similar in JavaScript, but they behave a bit differently. The difference is that `null` always has type "object", and `undefined` always has type "undefined". +The values `null` and `undefined` are very similar in JavaScript, but they behave a bit differently. The difference is that `null` always has type `'object'`, and `undefined` always has type `'undefined'`. -Whenever you declare a variable, but you don't set a value, the variable will become `undefined`. JavaScript will never make a variable `null` unless you explicitly program it. +Whenever you declare a variable, but you don't set a value, the variable will become `undefined`. JavaScript will never make a variable `null` unless you explicitly assign it the value `null`. ```js let x; @@ -121,24 +128,25 @@ console.log(typeof x); // -> 'undefined' ``` -### Typeof +### `typeof` operator -You can use `typeof` to get the type of a certain variable as you have seen in the above section 'Variable types'. As you can see in the following examples it returns the type of data that you have stored in your variable. +You can use the `typeof` operator to get the type of a certain variable as you have seen in the above section 'Value types'. As you can see in the following examples it returns the type of value that you have assigned to your variable. ## Strings -In JavaScript you can store a series of characters inside a variable, you then call this a string. You can store all sorts of characters (text/numbers, spaces or phrases) in strings. By using the `''` you define that something is a string. You can also use `""` to create a string. Both are fine as long as you are consistent (just make a choice on which one you prefer and stick to it). +In JavaScript you can assign a series of characters to a variable, you then call this a string. You can use all sorts of characters (text/numbers, spaces or phrases) in strings. By using the `''` you define that something is a string. You can also use `""` to create a string. Both are fine as long as you are consistent (just make a choice on which one you prefer and stick to it). ```js let foo = '42'; typeof foo //-> 'string' -let bar = 'I\'m 99 years old '; +let bar = 'I\'m 99 years old '; typeof bar //-> 'string' ``` ### String indexes and string properties -The index of a string always starts at 0. + +Individual characters in a string can be accessed by their position (index) within the string. The index of a string always starts at 0. Strings also have properties, for example `.length` you can use this to find the length of a string. So for example: @@ -150,14 +158,30 @@ baz.length; //-> 11 ### String methods ->Todo +String methods are named operations that you can use on string values to create new values. For example, the `toUpperCase` method creates a new string with all uppercase letters. + +```js +let baz = 'Hello World!'; +baz.toUpperCase(); // -> 'HELLO WORLD' +``` + +Methods differ from properties (such as `.length`) in that you must always use them with open and close parentheses `(` and `)`. + +Some methods need additional information, and you must supply it in the form of one or more _parameters_. For example: + +```js +let baz = 'Hello World!'; +baz.slice(3, 8) // -> 'lo Wo' +baz.startsWith('He') // -> true +baz.indexOf('World') // -> 6 +``` ## Numbers -All numbers in JavaScript are considered numbers with or without decimal +All numbers in JavaScript are considered numbers, either with or without a decimal. ```js -let quux = 42; +let quux = 42; typeof quux //-> 'number' let quuux = 3.3333; @@ -168,14 +192,14 @@ typeof quuux //-> 'number' ## Arrays -Variables that are arrays contain a list of things, instead of just one thing. What's inside the array, we typically call "elements". So, the array `[1, 2, 3]` has three elements. The array `[]` has no elements and is therefore empty. The number of elements in an array is called its "length". +Arrays are values that contain a list of things, instead of just one thing. What's inside the array, we typically call "elements". So, the array `[1, 2, 3]` has three elements. The array `[]` has no elements and is therefore empty. The number of elements in an array is called its "length". When you want to access an element inside an array, you use an "index". This is the number that you put between brackets (`[]`). Given the following code: ```js -var arr = ['john', 'jane', 'jack']; +let arr = ['john', 'jane', 'jack']; console.log(arr[0]); ``` @@ -193,6 +217,8 @@ If the index you use is not an integer (a whole number), or if it's less than `0 More about [arrays](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) +## Operators + ### Comparison operators >Note the two different uses of the equals sign: @@ -200,10 +226,11 @@ A single equals sign (=) is used to assign a value to a variable. A triple equals sign (===) is used to compare two values (see Equality Operators). #### Equality operators + * Equality `==` * Inequality `!=` -* Identity / strict equality `===` -* Non-identity / strict inequality `!==` +* Identity / strict equality `===` (preferred) +* Non-identity / strict inequality `!==` (preferred) How does this work in practice? @@ -219,13 +246,16 @@ How does this work in practice? > why does `7 == '7'` returns true and `9 === '9'` returns false? +We strongly recommend that you always use the strict form when comparing for equality (`===`) or inequality (`!==`). Use the non-strict forms only when there is a compelling reason to do so (you will be hard pressed to find such a reason). + #### Relational operators + * Greater than operator `>` * Greater than or equal operator `>=` * Less than operator `<` * Less than or equal operator `<=` -```js +```js 4 > 3 // -> true 3 >= 3 // -> true 13 < 12 // -> false @@ -239,38 +269,53 @@ More about [comparison operators](https://developer.mozilla.org/en-US/docs/Web/J * Addition `+` * Subtraction `-` * Multiplication `*` -* Division `/` -* Remainder (sometimes called modulo) `%` +* Division `/` +* Remainder (sometimes called modulo) `%`
Returns the remainder left over after you've shared the left number out into a number of integer portions equal to the right number. ```js -8 + 9 // -> 17, adds two numbers together. +8 + 9 // -> 17, adds two numbers together. 20 - 12 // -> 8, subtracts the right number from the left. 3 * 4 // -> 12, multiplies two numbers together. -10 / 5 // -> 2, divides the left number by the right. +10 / 5 // -> 2, divides the left number by the right. 8 % 3 /// -> 2, as three goes into 8 twice, leaving 2 left over. ``` -More about [Arithmetic_Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#.25_.28Modulus.29) +More about [Arithmetic operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#.25_.28Modulus.29) ### Logical operators * AND `&&` -* OR `||` +* OR `||` * NOT `!` Given that x = 6 and y = 3 ```js x < 10 && y > 1 // -> true -x == 5 || y == 5 // -> false +x === 5 || y === 5 // -> false x !== y // -> true ``` +Logical NOT + +```js +true === !false +false === !true +``` + More about [logical operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators) -### Operator precedence +### typeof operator + +We already mentioned the `typeof` operator: + +```js +typeof 5 // -> 'number' +``` + +### Assignment operators -There are compound assignment operators such as +=. The following two assignments are equivalent: +In addition to the simple asignment operator `=` there are also compound assignment operators such as `+=`. The following two assignments are equivalent: ```js x += 1; @@ -278,10 +323,10 @@ x = x + 1; ``` |Operator| Example| Same As| ------------------------------ -|= | x = y| x = y| -|+=| x += y| x = x + y| -|-=| x -= y| x = x - y| -|*=| x *= y| x = x * y| -|/=| x /= y| x = x / y| -|%=| x %= y| x = x % y| +|:------:|:--------:|:-------:| +|`=` | `x = y` | `x = y`| +|`+=`| `x += y` | `x = x + y`| +|`-=`| `x -= y` | `x = x - y`| +|`*=`| `x *= y` | `x = x * y`| +|`/=`| `x /= y` | `x = x / y`| +|`%=`| `x %= y` | `x = x % y`| From ca2633df253bb590df7ca70a417f40491bb44b1b Mon Sep 17 00:00:00 2001 From: Jim Cramer Date: Fri, 27 Oct 2017 12:59:16 +0200 Subject: [PATCH 020/304] Added string methods; explicit use of 'value' as a concept --- Week1/REVIEW.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Week1/REVIEW.md b/Week1/REVIEW.md index 6a6c96c5c..31ea60ec2 100644 --- a/Week1/REVIEW.md +++ b/Week1/REVIEW.md @@ -310,12 +310,12 @@ More about [logical operators](https://developer.mozilla.org/en-US/docs/Web/Java We already mentioned the `typeof` operator: ```js -typeof 5 // -> 'number' +typeof 5 // -> 'number' ``` ### Assignment operators -In addition to the simple asignment operator `=` there are also compound assignment operators such as `+=`. The following two assignments are equivalent: +In addition to the simple assignment operator `=` there are also compound assignment operators such as `+=`. The following two assignments are equivalent: ```js x += 1; From fa461d90b97c9c11cc4390200a18ca5031759b22 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 29 Oct 2017 13:06:00 +0100 Subject: [PATCH 021/304] fixed lists --- Week1/MAKEME.md | 78 ++++++++++++++++++++++++------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index d28d54f23..75a5e4be4 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -43,19 +43,19 @@ Write commands to do following: ``` console.log('I'm awesome'); ``` - 2.1 Copy the code in your `.js` file and run it. You will see that you will get a SyntaxError. Find a solution for this error, Hint read the error message carefully, it also gives an indication of where the problem is. +⋅⋅2.1 Copy the code in your `.js` file and run it. You will see that you will get a SyntaxError. Find a solution for this error, Hint read the error message carefully, it also gives an indication of where the problem is. 3. Declare a variable `x` and initialize it with an integer. - 3.1 First, _declare_ your variable `x`. - 3.2 Add a console.log statement that explains that explains in words what _you think_the value of `x` is, like in this example: +⋅⋅3.1 First, _declare_ your variable `x`. +⋅⋅3.2 Add a console.log statement that explains that explains in words what _you think_the value of `x` is, like in this example: ```js // TODO -> here you initialize your variable console.log('the value of my variable x will be: whateverYouThinkItWillLog'); ``` - 3.3 Add a console.log statement that logs the value of `x` - 3.4 Now _initialize_ your variable `x` with an integer - 3.5 Now add a console.log statement that explains what _you think_ the value of `x` is. - 3.6 Add a console.log statement that logs the value of `x`. +⋅⋅3.3 Add a console.log statement that logs the value of `x` +⋅⋅3.4 Now _initialize_ your variable `x` with an integer +⋅⋅3.5 Now add a console.log statement that explains what _you think_ the value of `x` is. +⋅⋅3.6 Add a console.log statement that logs the value of `x`. Steps to be taken: ```js @@ -68,11 +68,11 @@ console.log('I'm awesome'); ``` 4. Declare a variable `y` and assign a string to it. - 4.1 Write a console.log statement in which you explain in words what _you think_ the value of the string is - 4.2 Now console.log the variable `y`. - 4.3 Now assign a new string to the variable `y` - 4.4 Just like you did before write a console.log statement that explains in words what you think will be logged to the console. - 4.5 Now console.log `y` again. +⋅⋅4.1 Write a console.log statement in which you explain in words what _you think_ the value of the string is +⋅⋅4.2 Now console.log the variable `y`. +⋅⋅4.3 Now assign a new string to the variable `y` +⋅⋅4.4 Just like you did before write a console.log statement that explains in words what you think will be logged to the console. +⋅⋅4.5 Now console.log `y` again. ```js // TODO -> here you declare AND assign your string console.log('the value of my string will be: whateverYouThinkItWillLog'); @@ -83,39 +83,39 @@ console.log('I'm awesome'); ``` 5. How do you round the number 7.25, to the nearest integer? - 5.1 Declare a variable `z` and assign the number 7.25 to it. - 5.2 Console.log `z`. - 5.3 Declare another variable `a` that has the value of z but rounded to the nearest integer. - 5.4 Console.log `a` - 5.5 So now we have `z` and `a` find a way to compare the two values and store the highest of the two in a new variable. - 5.6 Console.log the highest value. +⋅⋅5.1 Declare a variable `z` and assign the number 7.25 to it. +⋅⋅5.2 Console.log `z`. +⋅⋅5.3 Declare another variable `a` that has the value of z but rounded to the nearest integer. +⋅⋅5.4 Console.log `a` +⋅⋅5.5 So now we have `z` and `a` find a way to compare the two values and store the highest of the two in a new variable. +⋅⋅5.6 Console.log the highest value. 6. Arrays! - 6.1 Declare an empty array (you can decide on how to call it yourself, but read on a bit here and see if you can find a good name that exactly describes what this variable will hold). - 6.2 Write a console.log statement that explains in words what you think the value of the array is. - 6.3 Console.log your array. - 6.4 Create an array that has your favorite animals inside - 6.5 Log your array - 6.6 Add a statement that adds Daan's favorite animal (baby pig) to the existing array - 6.7 Log your new array! +⋅⋅6.1 Declare an empty array (you can decide on how to call it yourself, but read on a bit here and see if you can find a good name that exactly describes what this variable will hold). +⋅⋅6.2 Write a console.log statement that explains in words what you think the value of the array is. +⋅⋅6.3 Console.log your array. +⋅⋅6.4 Create an array that has your favorite animals inside +⋅⋅6.5 Log your array +⋅⋅6.6 Add a statement that adds Daan's favorite animal (baby pig) to the existing array +⋅⋅6.7 Log your new array! 7. More strings - 7.1 Let's consider the following string: `let myString = "this,is,a,test"`. - 7.2 Add the string to your file and console.log it. - 7.3 Find a way to get the length of `myString`. - 7.4 Console.log the length of `myString`. +⋅⋅7.1 Let's consider the following string: `let myString = "this,is,a,test"`. +⋅⋅7.2 Add the string to your file and console.log it. +⋅⋅7.3 Find a way to get the length of `myString`. +⋅⋅7.4 Console.log the length of `myString`. 8. Write a program that checks the types of two variables and prints out `SAME TYPE` if they are the same type. - 8.1 First declare at least four variables and assign them different data types. - 8.2 For each variable write a `console.log` statement that logs the value +⋅⋅8.1 First declare at least four variables and assign them different data types. +⋅⋅8.2 For each variable write a `console.log` statement that logs the value ```js let foo = 3; console.log('The value of my variable foo is: ' + foo); ``` - 8.3 Now write a console.log statement wherein you first explain in words what you think the _type_ of your variables is. - 8.4 Now use `typeof` to log the actual _type_ of your variables. - 8.5 Now compare the types of your different variables with one another. - 8.6 Make sure to also show a message when the variables you are comparing are not the same type. +⋅⋅8.3 Now write a console.log statement wherein you first explain in words what you think the _type_ of your variables is. +⋅⋅8.4 Now use `typeof` to log the actual _type_ of your variables. +⋅⋅8.5 Now compare the types of your different variables with one another. +⋅⋅8.6 Make sure to also show a message when the variables you are comparing are not the same type. For example: ```js let x = 9; @@ -128,12 +128,12 @@ console.log('I'm awesome'); ``` 9. If `x` equals 7, and the only other statement is `x = x % 3`, what would be the new value of `x`? - 9.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. +⋅⋅9.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. 10. Write a program to answer the following questions: - 10.1 Can you store multiple types in an array? Numbers and strings? - 10.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this? - 10.3 Add console.log statements to the above program's in which you show that you understand the concepts (just like you've done in the above assignments). +⋅⋅10.1 Can you store multiple types in an array? Numbers and strings? +⋅⋅10.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this? +⋅⋅10.3 Add console.log statements to the above program's in which you show that you understand the concepts (just like you've done in the above assignments). ### Step 3: **Some freeCodeCamp challenges (10 hours):** From eb7a353c539468297a5162a2c0b839ec376201b5 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 29 Oct 2017 13:07:28 +0100 Subject: [PATCH 022/304] fixed lists --- Week1/MAKEME.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index 75a5e4be4..073965df0 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -43,18 +43,18 @@ Write commands to do following: ``` console.log('I'm awesome'); ``` -⋅⋅2.1 Copy the code in your `.js` file and run it. You will see that you will get a SyntaxError. Find a solution for this error, Hint read the error message carefully, it also gives an indication of where the problem is. +⋅⋅1. Copy the code in your `.js` file and run it. You will see that you will get a SyntaxError. Find a solution for this error, Hint read the error message carefully, it also gives an indication of where the problem is. 3. Declare a variable `x` and initialize it with an integer. -⋅⋅3.1 First, _declare_ your variable `x`. -⋅⋅3.2 Add a console.log statement that explains that explains in words what _you think_the value of `x` is, like in this example: +⋅⋅1. First, _declare_ your variable `x`. +⋅⋅2. Add a console.log statement that explains that explains in words what _you think_the value of `x` is, like in this example: ```js // TODO -> here you initialize your variable console.log('the value of my variable x will be: whateverYouThinkItWillLog'); ``` -⋅⋅3.3 Add a console.log statement that logs the value of `x` -⋅⋅3.4 Now _initialize_ your variable `x` with an integer -⋅⋅3.5 Now add a console.log statement that explains what _you think_ the value of `x` is. +⋅⋅3. Add a console.log statement that logs the value of `x` +⋅⋅4. Now _initialize_ your variable `x` with an integer +⋅⋅5. Now add a console.log statement that explains what _you think_ the value of `x` is. ⋅⋅3.6 Add a console.log statement that logs the value of `x`. Steps to be taken: From 36db0b13daf887b1de5ce99856f9644cb9a98641 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 29 Oct 2017 13:11:38 +0100 Subject: [PATCH 023/304] fixed lists --- Week1/MAKEME.md | 98 ++++++++++++++++++++++++------------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index 073965df0..11e239bcc 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -39,23 +39,23 @@ Write commands to do following: 1. Write a console.log statement saying "Hello World!" for each language that you know. -2. Consider the following code: +2. Consider the following code: ``` console.log('I'm awesome'); ``` -⋅⋅1. Copy the code in your `.js` file and run it. You will see that you will get a SyntaxError. Find a solution for this error, Hint read the error message carefully, it also gives an indication of where the problem is. + 2.1 Copy the code in your `.js` file and run it. You will see that you will get a SyntaxError. Find a solution for this error, Hint read the error message carefully, it also gives an indication of where the problem is. -3. Declare a variable `x` and initialize it with an integer. -⋅⋅1. First, _declare_ your variable `x`. -⋅⋅2. Add a console.log statement that explains that explains in words what _you think_the value of `x` is, like in this example: +3. Declare a variable `x` and initialize it with an integer. + 3.1 First, _declare_ your variable `x`. + 3.2 Add a console.log statement that explains that explains in words what _you think_the value of `x` is, like in this example: ```js // TODO -> here you initialize your variable console.log('the value of my variable x will be: whateverYouThinkItWillLog'); ``` -⋅⋅3. Add a console.log statement that logs the value of `x` -⋅⋅4. Now _initialize_ your variable `x` with an integer -⋅⋅5. Now add a console.log statement that explains what _you think_ the value of `x` is. -⋅⋅3.6 Add a console.log statement that logs the value of `x`. + 3.3 Add a console.log statement that logs the value of `x` + 3.4 Now _initialize_ your variable `x` with an integer + 3.5 Now add a console.log statement that explains what _you think_ the value of `x` is. + 3.6 Add a console.log statement that logs the value of `x`. Steps to be taken: ```js @@ -67,12 +67,12 @@ console.log('I'm awesome'); // TODO -> log value of x again ``` -4. Declare a variable `y` and assign a string to it. -⋅⋅4.1 Write a console.log statement in which you explain in words what _you think_ the value of the string is -⋅⋅4.2 Now console.log the variable `y`. -⋅⋅4.3 Now assign a new string to the variable `y` -⋅⋅4.4 Just like you did before write a console.log statement that explains in words what you think will be logged to the console. -⋅⋅4.5 Now console.log `y` again. +4. Declare a variable `y` and assign a string to it. + 4.1 Write a console.log statement in which you explain in words what _you think_ the value of the string is + 4.2 Now console.log the variable `y`. + 4.3 Now assign a new string to the variable `y` + 4.4 Just like you did before write a console.log statement that explains in words what you think will be logged to the console. + 4.5 Now console.log `y` again. ```js // TODO -> here you declare AND assign your string console.log('the value of my string will be: whateverYouThinkItWillLog'); @@ -82,40 +82,40 @@ console.log('I'm awesome'); // TODO -> log the actual value of the string to the console ``` -5. How do you round the number 7.25, to the nearest integer? -⋅⋅5.1 Declare a variable `z` and assign the number 7.25 to it. -⋅⋅5.2 Console.log `z`. -⋅⋅5.3 Declare another variable `a` that has the value of z but rounded to the nearest integer. -⋅⋅5.4 Console.log `a` -⋅⋅5.5 So now we have `z` and `a` find a way to compare the two values and store the highest of the two in a new variable. -⋅⋅5.6 Console.log the highest value. - -6. Arrays! -⋅⋅6.1 Declare an empty array (you can decide on how to call it yourself, but read on a bit here and see if you can find a good name that exactly describes what this variable will hold). -⋅⋅6.2 Write a console.log statement that explains in words what you think the value of the array is. -⋅⋅6.3 Console.log your array. -⋅⋅6.4 Create an array that has your favorite animals inside -⋅⋅6.5 Log your array -⋅⋅6.6 Add a statement that adds Daan's favorite animal (baby pig) to the existing array -⋅⋅6.7 Log your new array! +5. How do you round the number 7.25, to the nearest integer? + 5.1 Declare a variable `z` and assign the number 7.25 to it. + 5.2 Console.log `z`. + 5.3 Declare another variable `a` that has the value of z but rounded to the nearest integer. + 5.4 Console.log `a` + 5.5 So now we have `z` and `a` find a way to compare the two values and store the highest of the two in a new variable. + 5.6 Console.log the highest value. + +6. Arrays! + 6.1 Declare an empty array (you can decide on how to call it yourself, but read on a bit here and see if you can find a good name that exactly describes what this variable will hold). + 6.2 Write a console.log statement that explains in words what you think the value of the array is. + 6.3 Console.log your array. + 6.4 Create an array that has your favorite animals inside + 6.5 Log your array + 6.6 Add a statement that adds Daan's favorite animal (baby pig) to the existing array + 6.7 Log your new array! 7. More strings -⋅⋅7.1 Let's consider the following string: `let myString = "this,is,a,test"`. -⋅⋅7.2 Add the string to your file and console.log it. -⋅⋅7.3 Find a way to get the length of `myString`. -⋅⋅7.4 Console.log the length of `myString`. - -8. Write a program that checks the types of two variables and prints out `SAME TYPE` if they are the same type. -⋅⋅8.1 First declare at least four variables and assign them different data types. -⋅⋅8.2 For each variable write a `console.log` statement that logs the value + 7.1 Let's consider the following string: `let myString = "this,is,a,test"`. + 7.2 Add the string to your file and console.log it. + 7.3 Find a way to get the length of `myString`. + 7.4 Console.log the length of `myString`. + +8. Write a program that checks the types of two variables and prints out `SAME TYPE` if they are the same type. + 8.1 First declare at least four variables and assign them different data types. + 8.2 For each variable write a `console.log` statement that logs the value ```js let foo = 3; console.log('The value of my variable foo is: ' + foo); ``` -⋅⋅8.3 Now write a console.log statement wherein you first explain in words what you think the _type_ of your variables is. -⋅⋅8.4 Now use `typeof` to log the actual _type_ of your variables. -⋅⋅8.5 Now compare the types of your different variables with one another. -⋅⋅8.6 Make sure to also show a message when the variables you are comparing are not the same type. + 8.3 Now write a console.log statement wherein you first explain in words what you think the _type_ of your variables is. + 8.4 Now use `typeof` to log the actual _type_ of your variables. + 8.5 Now compare the types of your different variables with one another. + 8.6 Make sure to also show a message when the variables you are comparing are not the same type. For example: ```js let x = 9; @@ -127,13 +127,13 @@ console.log('I'm awesome'); // TODO -> add a way of giving feedback if your variables don't have the same type ``` -9. If `x` equals 7, and the only other statement is `x = x % 3`, what would be the new value of `x`? -⋅⋅9.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. +9. If `x` equals 7, and the only other statement is `x = x % 3`, what would be the new value of `x`? + 9.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. -10. Write a program to answer the following questions: -⋅⋅10.1 Can you store multiple types in an array? Numbers and strings? -⋅⋅10.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this? -⋅⋅10.3 Add console.log statements to the above program's in which you show that you understand the concepts (just like you've done in the above assignments). +10. Write a program to answer the following questions: + 10.1 Can you store multiple types in an array? Numbers and strings? + 10.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this? + 10.3 Add console.log statements to the above program's in which you show that you understand the concepts (just like you've done in the above assignments). ### Step 3: **Some freeCodeCamp challenges (10 hours):** From ce97fd9011fec741ac30a77f7e963d8bb1d36390 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 29 Oct 2017 13:14:13 +0100 Subject: [PATCH 024/304] fixed lists --- Week1/MAKEME.md | 78 ++++++++++++++++++++++++------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index 11e239bcc..386638717 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -43,19 +43,19 @@ Write commands to do following: ``` console.log('I'm awesome'); ``` - 2.1 Copy the code in your `.js` file and run it. You will see that you will get a SyntaxError. Find a solution for this error, Hint read the error message carefully, it also gives an indication of where the problem is. + 2.1 Copy the code in your `.js` file and run it. You will see that you will get a SyntaxError. Find a solution for this error, Hint read the error message carefully, it also gives an indication of where the problem is. 3. Declare a variable `x` and initialize it with an integer. - 3.1 First, _declare_ your variable `x`. - 3.2 Add a console.log statement that explains that explains in words what _you think_the value of `x` is, like in this example: + 3.1 First, _declare_ your variable `x`. + 3.2 Add a console.log statement that explains that explains in words what _you think_the value of `x` is, like in this example: ```js // TODO -> here you initialize your variable console.log('the value of my variable x will be: whateverYouThinkItWillLog'); ``` - 3.3 Add a console.log statement that logs the value of `x` - 3.4 Now _initialize_ your variable `x` with an integer - 3.5 Now add a console.log statement that explains what _you think_ the value of `x` is. - 3.6 Add a console.log statement that logs the value of `x`. + 3.3 Add a console.log statement that logs the value of `x` + 3.4 Now _initialize_ your variable `x` with an integer + 3.5 Now add a console.log statement that explains what _you think_ the value of `x` is. + 3.6 Add a console.log statement that logs the value of `x`. Steps to be taken: ```js @@ -68,11 +68,11 @@ console.log('I'm awesome'); ``` 4. Declare a variable `y` and assign a string to it. - 4.1 Write a console.log statement in which you explain in words what _you think_ the value of the string is - 4.2 Now console.log the variable `y`. - 4.3 Now assign a new string to the variable `y` - 4.4 Just like you did before write a console.log statement that explains in words what you think will be logged to the console. - 4.5 Now console.log `y` again. + 4.1 Write a console.log statement in which you explain in words what _you think_ the value of the string is + 4.2 Now console.log the variable `y`. + 4.3 Now assign a new string to the variable `y` + 4.4 Just like you did before write a console.log statement that explains in words what you think will be logged to the console. + 4.5 Now console.log `y` again. ```js // TODO -> here you declare AND assign your string console.log('the value of my string will be: whateverYouThinkItWillLog'); @@ -83,39 +83,39 @@ console.log('I'm awesome'); ``` 5. How do you round the number 7.25, to the nearest integer? - 5.1 Declare a variable `z` and assign the number 7.25 to it. - 5.2 Console.log `z`. - 5.3 Declare another variable `a` that has the value of z but rounded to the nearest integer. - 5.4 Console.log `a` - 5.5 So now we have `z` and `a` find a way to compare the two values and store the highest of the two in a new variable. - 5.6 Console.log the highest value. + 5.1 Declare a variable `z` and assign the number 7.25 to it. + 5.2 Console.log `z`. + 5.3 Declare another variable `a` that has the value of z but rounded to the nearest integer. + 5.4 Console.log `a` + 5.5 So now we have `z` and `a` find a way to compare the two values and store the highest of the two in a new variable. + 5.6 Console.log the highest value. 6. Arrays! - 6.1 Declare an empty array (you can decide on how to call it yourself, but read on a bit here and see if you can find a good name that exactly describes what this variable will hold). - 6.2 Write a console.log statement that explains in words what you think the value of the array is. - 6.3 Console.log your array. - 6.4 Create an array that has your favorite animals inside - 6.5 Log your array - 6.6 Add a statement that adds Daan's favorite animal (baby pig) to the existing array - 6.7 Log your new array! + 6.1 Declare an empty array (you can decide on how to call it yourself, but read on a bit here and see if you can find a good name that exactly describes what this variable will hold). + 6.2 Write a console.log statement that explains in words what you think the value of the array is. + 6.3 Console.log your array. + 6.4 Create an array that has your favorite animals inside + 6.5 Log your array + 6.6 Add a statement that adds Daan's favorite animal (baby pig) to the existing array + 6.7 Log your new array! 7. More strings - 7.1 Let's consider the following string: `let myString = "this,is,a,test"`. - 7.2 Add the string to your file and console.log it. - 7.3 Find a way to get the length of `myString`. - 7.4 Console.log the length of `myString`. + 7.1 Let's consider the following string: `let myString = "this,is,a,test"`. + 7.2 Add the string to your file and console.log it. + 7.3 Find a way to get the length of `myString`. + 7.4 Console.log the length of `myString`. 8. Write a program that checks the types of two variables and prints out `SAME TYPE` if they are the same type. - 8.1 First declare at least four variables and assign them different data types. - 8.2 For each variable write a `console.log` statement that logs the value + 8.1 First declare at least four variables and assign them different data types. + 8.2 For each variable write a `console.log` statement that logs the value ```js let foo = 3; console.log('The value of my variable foo is: ' + foo); ``` - 8.3 Now write a console.log statement wherein you first explain in words what you think the _type_ of your variables is. - 8.4 Now use `typeof` to log the actual _type_ of your variables. - 8.5 Now compare the types of your different variables with one another. - 8.6 Make sure to also show a message when the variables you are comparing are not the same type. + 8.3 Now write a console.log statement wherein you first explain in words what you think the _type_ of your variables is. + 8.4 Now use `typeof` to log the actual _type_ of your variables. + 8.5 Now compare the types of your different variables with one another. + 8.6 Make sure to also show a message when the variables you are comparing are not the same type. For example: ```js let x = 9; @@ -128,12 +128,12 @@ console.log('I'm awesome'); ``` 9. If `x` equals 7, and the only other statement is `x = x % 3`, what would be the new value of `x`? - 9.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. + 9.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. 10. Write a program to answer the following questions: - 10.1 Can you store multiple types in an array? Numbers and strings? - 10.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this? - 10.3 Add console.log statements to the above program's in which you show that you understand the concepts (just like you've done in the above assignments). + 10.1 Can you store multiple types in an array? Numbers and strings? + 10.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this? + 10.3 Add console.log statements to the above program's in which you show that you understand the concepts (just like you've done in the above assignments). ### Step 3: **Some freeCodeCamp challenges (10 hours):** From 00f6cdef145480c849f997f3269016c618d23e36 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 29 Oct 2017 13:16:40 +0100 Subject: [PATCH 025/304] fixed lists --- Week1/MAKEME.md | 78 ++++++++++++++++++++++++------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index 386638717..0764503d0 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -43,19 +43,19 @@ Write commands to do following: ``` console.log('I'm awesome'); ``` - 2.1 Copy the code in your `.js` file and run it. You will see that you will get a SyntaxError. Find a solution for this error, Hint read the error message carefully, it also gives an indication of where the problem is. +2.1 Copy the code in your `.js` file and run it. You will see that you will get a SyntaxError. Find a solution for this error, Hint read the error message carefully, it also gives an indication of where the problem is. 3. Declare a variable `x` and initialize it with an integer. - 3.1 First, _declare_ your variable `x`. - 3.2 Add a console.log statement that explains that explains in words what _you think_the value of `x` is, like in this example: +
3.1 First, _declare_ your variable `x`. +
3.2 Add a console.log statement that explains that explains in words what _you think_the value of `x` is, like in this example: ```js // TODO -> here you initialize your variable console.log('the value of my variable x will be: whateverYouThinkItWillLog'); ``` - 3.3 Add a console.log statement that logs the value of `x` - 3.4 Now _initialize_ your variable `x` with an integer - 3.5 Now add a console.log statement that explains what _you think_ the value of `x` is. - 3.6 Add a console.log statement that logs the value of `x`. +
3.3 Add a console.log statement that logs the value of `x` +
3.4 Now _initialize_ your variable `x` with an integer +
3.5 Now add a console.log statement that explains what _you think_ the value of `x` is. +
3.6 Add a console.log statement that logs the value of `x`. Steps to be taken: ```js @@ -68,11 +68,11 @@ console.log('I'm awesome'); ``` 4. Declare a variable `y` and assign a string to it. - 4.1 Write a console.log statement in which you explain in words what _you think_ the value of the string is - 4.2 Now console.log the variable `y`. - 4.3 Now assign a new string to the variable `y` - 4.4 Just like you did before write a console.log statement that explains in words what you think will be logged to the console. - 4.5 Now console.log `y` again. +
4.1 Write a console.log statement in which you explain in words what _you think_ the value of the string is +
4.2 Now console.log the variable `y`. +
4.3 Now assign a new string to the variable `y` +
4.4 Just like you did before write a console.log statement that explains in words what you think will be logged to the console. +
4.5 Now console.log `y` again. ```js // TODO -> here you declare AND assign your string console.log('the value of my string will be: whateverYouThinkItWillLog'); @@ -83,40 +83,40 @@ console.log('I'm awesome'); ``` 5. How do you round the number 7.25, to the nearest integer? - 5.1 Declare a variable `z` and assign the number 7.25 to it. - 5.2 Console.log `z`. - 5.3 Declare another variable `a` that has the value of z but rounded to the nearest integer. - 5.4 Console.log `a` - 5.5 So now we have `z` and `a` find a way to compare the two values and store the highest of the two in a new variable. - 5.6 Console.log the highest value. +
5.1 Declare a variable `z` and assign the number 7.25 to it. +
5.2 Console.log `z`. +
5.3 Declare another variable `a` that has the value of z but rounded to the nearest integer. +
5.4 Console.log `a` +
5.5 So now we have `z` and `a` find a way to compare the two values and store the highest of the two in a new variable. +
5.6 Console.log the highest value. 6. Arrays! - 6.1 Declare an empty array (you can decide on how to call it yourself, but read on a bit here and see if you can find a good name that exactly describes what this variable will hold). - 6.2 Write a console.log statement that explains in words what you think the value of the array is. - 6.3 Console.log your array. - 6.4 Create an array that has your favorite animals inside - 6.5 Log your array - 6.6 Add a statement that adds Daan's favorite animal (baby pig) to the existing array - 6.7 Log your new array! +
6.1 Declare an empty array (you can decide on how to call it yourself, but read on a bit here and see if you can find a good name that exactly describes what this variable will hold). +
6.2 Write a console.log statement that explains in words what you think the value of the array is. +
6.3 Console.log your array. +
6.4 Create an array that has your favorite animals inside +
6.5 Log your array +
6.6 Add a statement that adds Daan's favorite animal (baby pig) to the existing array +
6.7 Log your new array! 7. More strings - 7.1 Let's consider the following string: `let myString = "this,is,a,test"`. - 7.2 Add the string to your file and console.log it. - 7.3 Find a way to get the length of `myString`. - 7.4 Console.log the length of `myString`. +
7.1 Let's consider the following string: `let myString = "this,is,a,test"`. +
7.2 Add the string to your file and console.log it. +
7.3 Find a way to get the length of `myString`. +
7.4 Console.log the length of `myString`. 8. Write a program that checks the types of two variables and prints out `SAME TYPE` if they are the same type. - 8.1 First declare at least four variables and assign them different data types. - 8.2 For each variable write a `console.log` statement that logs the value +
8.1 First declare at least four variables and assign them different data types. +
8.2 For each variable write a `console.log` statement that logs the value ```js let foo = 3; console.log('The value of my variable foo is: ' + foo); ``` - 8.3 Now write a console.log statement wherein you first explain in words what you think the _type_ of your variables is. - 8.4 Now use `typeof` to log the actual _type_ of your variables. - 8.5 Now compare the types of your different variables with one another. - 8.6 Make sure to also show a message when the variables you are comparing are not the same type. - For example: +
8.3 Now write a console.log statement wherein you first explain in words what you think the _type_ of your variables is. +
8.4 Now use `typeof` to log the actual _type_ of your variables. +
8.5 Now compare the types of your different variables with one another. +
8.6 Make sure to also show a message when the variables you are comparing are not the same type. +For example: ```js let x = 9; let y = 'Hello'; @@ -131,9 +131,9 @@ console.log('I'm awesome'); 9.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. 10. Write a program to answer the following questions: - 10.1 Can you store multiple types in an array? Numbers and strings? - 10.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this? - 10.3 Add console.log statements to the above program's in which you show that you understand the concepts (just like you've done in the above assignments). +
10.1 Can you store multiple types in an array? Numbers and strings? +
10.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this? +
10.3 Add console.log statements to the above program's in which you show that you understand the concepts (just like you've done in the above assignments). ### Step 3: **Some freeCodeCamp challenges (10 hours):** From 948c340b354a510170010ada5b26b23e6fe3596c Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 29 Oct 2017 13:18:09 +0100 Subject: [PATCH 026/304] finally fixed list --- Week1/MAKEME.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index 0764503d0..4b8841c8e 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -46,7 +46,7 @@ console.log('I'm awesome'); 2.1 Copy the code in your `.js` file and run it. You will see that you will get a SyntaxError. Find a solution for this error, Hint read the error message carefully, it also gives an indication of where the problem is. 3. Declare a variable `x` and initialize it with an integer. -
3.1 First, _declare_ your variable `x`. + 3.1 First, _declare_ your variable `x`.
3.2 Add a console.log statement that explains that explains in words what _you think_the value of `x` is, like in this example: ```js // TODO -> here you initialize your variable @@ -68,7 +68,7 @@ console.log('I'm awesome'); ``` 4. Declare a variable `y` and assign a string to it. -
4.1 Write a console.log statement in which you explain in words what _you think_ the value of the string is + 4.1 Write a console.log statement in which you explain in words what _you think_ the value of the string is
4.2 Now console.log the variable `y`.
4.3 Now assign a new string to the variable `y`
4.4 Just like you did before write a console.log statement that explains in words what you think will be logged to the console. @@ -83,7 +83,7 @@ console.log('I'm awesome'); ``` 5. How do you round the number 7.25, to the nearest integer? -
5.1 Declare a variable `z` and assign the number 7.25 to it. + 5.1 Declare a variable `z` and assign the number 7.25 to it.
5.2 Console.log `z`.
5.3 Declare another variable `a` that has the value of z but rounded to the nearest integer.
5.4 Console.log `a` @@ -91,7 +91,7 @@ console.log('I'm awesome');
5.6 Console.log the highest value. 6. Arrays! -
6.1 Declare an empty array (you can decide on how to call it yourself, but read on a bit here and see if you can find a good name that exactly describes what this variable will hold). + 6.1 Declare an empty array (you can decide on how to call it yourself, but read on a bit here and see if you can find a good name that exactly describes what this variable will hold).
6.2 Write a console.log statement that explains in words what you think the value of the array is.
6.3 Console.log your array.
6.4 Create an array that has your favorite animals inside @@ -100,13 +100,13 @@ console.log('I'm awesome');
6.7 Log your new array! 7. More strings -
7.1 Let's consider the following string: `let myString = "this,is,a,test"`. + 7.1 Let's consider the following string: `let myString = "this,is,a,test"`.
7.2 Add the string to your file and console.log it.
7.3 Find a way to get the length of `myString`.
7.4 Console.log the length of `myString`. 8. Write a program that checks the types of two variables and prints out `SAME TYPE` if they are the same type. -
8.1 First declare at least four variables and assign them different data types. + 8.1 First declare at least four variables and assign them different data types.
8.2 For each variable write a `console.log` statement that logs the value ```js let foo = 3; @@ -131,7 +131,7 @@ For example: 9.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. 10. Write a program to answer the following questions: -
10.1 Can you store multiple types in an array? Numbers and strings? + 10.1 Can you store multiple types in an array? Numbers and strings?
10.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this?
10.3 Add console.log statements to the above program's in which you show that you understand the concepts (just like you've done in the above assignments). From c883589546786f1a43330456722b79f4f95215c1 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 29 Oct 2017 13:39:35 +0100 Subject: [PATCH 027/304] fixed typo --- Week1/MAKEME.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index 4b8841c8e..00c66208d 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -47,7 +47,7 @@ console.log('I'm awesome'); 3. Declare a variable `x` and initialize it with an integer. 3.1 First, _declare_ your variable `x`. -
3.2 Add a console.log statement that explains that explains in words what _you think_the value of `x` is, like in this example: +
3.2 Add a console.log statement that explains that explains in words what _you think_ the value of `x` is, like in this example: ```js // TODO -> here you initialize your variable console.log('the value of my variable x will be: whateverYouThinkItWillLog'); @@ -100,7 +100,7 @@ console.log('I'm awesome');
6.7 Log your new array! 7. More strings - 7.1 Let's consider the following string: `let myString = "this,is,a,test"`. +
7.1 Let's consider the following string: `let myString = "this,is,a,test"`.
7.2 Add the string to your file and console.log it.
7.3 Find a way to get the length of `myString`.
7.4 Console.log the length of `myString`. @@ -116,11 +116,13 @@ console.log('I'm awesome');
8.4 Now use `typeof` to log the actual _type_ of your variables.
8.5 Now compare the types of your different variables with one another.
8.6 Make sure to also show a message when the variables you are comparing are not the same type. -For example: + +For example: + ```js let x = 9; let y = 'Hello'; - + if () { console.log('SAME TYPE'); } From 6bec49ff0505d4cb656a87932804a2ba23b9e52f Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 29 Oct 2017 13:40:41 +0100 Subject: [PATCH 028/304] fixed typo --- Week1/MAKEME.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index 00c66208d..e2156727b 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -116,9 +116,7 @@ console.log('I'm awesome');
8.4 Now use `typeof` to log the actual _type_ of your variables.
8.5 Now compare the types of your different variables with one another.
8.6 Make sure to also show a message when the variables you are comparing are not the same type. - For example: - ```js let x = 9; let y = 'Hello'; From 021c9fd2596b6bdb82f651a96da4d57f096157ec Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 29 Oct 2017 13:41:37 +0100 Subject: [PATCH 029/304] fixed typo --- Week1/MAKEME.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index e2156727b..be5406cbb 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -116,11 +116,11 @@ console.log('I'm awesome');
8.4 Now use `typeof` to log the actual _type_ of your variables.
8.5 Now compare the types of your different variables with one another.
8.6 Make sure to also show a message when the variables you are comparing are not the same type. -For example: +
For example: ```js let x = 9; let y = 'Hello'; - + if () { console.log('SAME TYPE'); } From db240cc388a863ddd313d76e4a946eebb9e73b80 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 29 Oct 2017 13:42:05 +0100 Subject: [PATCH 030/304] fixed typo --- Week1/MAKEME.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index be5406cbb..b486b32a0 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -117,6 +117,7 @@ console.log('I'm awesome');
8.5 Now compare the types of your different variables with one another.
8.6 Make sure to also show a message when the variables you are comparing are not the same type.
For example: + ```js let x = 9; let y = 'Hello'; From 928309c635f2b4ca700d757aeef99dd89087490f Mon Sep 17 00:00:00 2001 From: Maartje Kruijt Date: Sun, 29 Oct 2017 13:44:05 +0100 Subject: [PATCH 031/304] Update MAKEME.md --- Week1/MAKEME.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index b486b32a0..98d1b8bd6 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -118,15 +118,15 @@ console.log('I'm awesome');
8.6 Make sure to also show a message when the variables you are comparing are not the same type.
For example: - ```js - let x = 9; - let y = 'Hello'; - - if () { - console.log('SAME TYPE'); - } - // TODO -> add a way of giving feedback if your variables don't have the same type - ``` +```js +let x = 9; +let y = 'Hello'; + +if () { + console.log('SAME TYPE'); +} +// TODO -> add a way of giving feedback if your variables don't have the same type +``` 9. If `x` equals 7, and the only other statement is `x = x % 3`, what would be the new value of `x`? 9.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. From ddd477147d297de668c43cb0f9ad6aa2b254ed54 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Mon, 30 Oct 2017 14:40:45 +0100 Subject: [PATCH 032/304] added deadlines and links to readme's --- Week1/MAKEME.md | 21 +++++++++++++++++---- Week1/README.md | 12 +++++++++++- Week2/README.md | 8 +++++++- Week3/MAKEME.md | 10 ++++++++++ Week3/README.md | 5 +++++ 5 files changed, 50 insertions(+), 6 deletions(-) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index 98d1b8bd6..65401a0d7 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -4,8 +4,9 @@ ## Before you start with the homework: -1. Watch: [What is programming](https://www.khanacademy.org/computing/computer-programming/programming/intro-to-programming/v/programming-intro) Just watch the 2 min video, you do not have to do the entire JavaScript course (It could be useful later on though). -2. Please watch the following parts of the course, [Programming Foundations Fundamentals](https://www.lynda.com/Programming-Foundations-tutorials/Welcome/83603/90426-4.html) on Lynda.com (if you don't have access to Lynda yet ask Gijs): +1. Go through the review of [week 1](https://github.com/HackYourFuture/JavaScript/blob/master/Week1/REVIEW.md) +2. Watch: [What is programming](https://www.khanacademy.org/computing/computer-programming/programming/intro-to-programming/v/programming-intro) Just watch the 2 min video, you do not have to do the entire JavaScript course (It could be useful later on though). +3. Please watch the following parts of the course, [Programming Foundations Fundamentals](https://www.lynda.com/Programming-Foundations-tutorials/Welcome/83603/90426-4.html) on Lynda.com (if you don't have access to Lynda yet ask Gijs): 0. Introduction 1. Programming Basics 2. Core Programming Syntax @@ -13,6 +14,8 @@ ## Step 1: Command Line +_Deadline Tuesday_ + >We covered a bit of command line usage in the first class and got a program running which is great. If you need a refresher for the command line please have a look here: https://github.com/HackYourFuture/CommandLine 1. Create a `.js` file that prints `Hello` when you run it from the command line. (Hint: `node` is the program that can run your JavaScript files.) @@ -33,7 +36,15 @@ Write commands to do following: ``` -## Step 2: JavaScript +## Step 2: Feedback + +_Deadline Wednesday_ + +Provide feedback on the HTML-CSS assignments (week 3) of one of your fellow students. You will be assigned to one of the assignments by the class lead of this week. + +## Step 3: JavaScript + +_Deadline Thursday_ > For all the following exercises create a new .js file. Try to find a proper name for each file or make a small comment about what it does inside for future reference. All these @@ -136,7 +147,9 @@ if () {
10.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this?
10.3 Add console.log statements to the above program's in which you show that you understand the concepts (just like you've done in the above assignments). -### Step 3: **Some freeCodeCamp challenges (10 hours):** +### Step 4: **Some freeCodeCamp challenges (10 hours):** + +Deadline Saturday_ On freeCodeCamp.com please do the [Basic JavaScript](https://www.freecodecamp.com/challenges/learn-how-free-code-camp-works) exercises up and until the __"Shopping List"__ exercise (there are some topics we did not cover but you can do it). diff --git a/Week1/README.md b/Week1/README.md index 1d0d9534b..a306a7fa3 100644 --- a/Week1/README.md +++ b/Week1/README.md @@ -12,6 +12,14 @@ In week two we will discuss the following topics: ### Here are resources that we like you to read as a preparation for the coming lecture: +Please watch the following parts of the course, [Programming Foundations Fundamentals](https://www.lynda.com/Programming-Foundations-tutorials/Welcome/83603/90426-4.html) on Lynda.com (if you don't have access to Lynda yet ask Gijs): +
4. Writing Conditional Code +
5. Modular Code +
6. Iteration: Writing Loops +
7. More About Strings +
8. Collections +
11. When Things Go Wrong + - 'Loops' of [_A Smarter Way To Learn JavaScript_](https://github.com/Sharique-Hasan/SaylaniBatch2-JavaScript/blob/master/A%20Smarter%20Way%20to%20Learn%20JavaScript.pdf) : Chapters 18-20 - 'Functions' of [_A Smarter Way To Learn JavaScript_](https://github.com/Sharique-Hasan/SaylaniBatch2-JavaScript/blob/master/A%20Smarter%20Way%20to%20Learn%20JavaScript.pdf) : Chapters 35 - 38 - Functions ~ http://eloquentjavascript.net/03_functions.html @@ -19,6 +27,8 @@ In week two we will discuss the following topics: - 'Conditions' of [_A Smarter Way To Learn JavaScript_](https://github.com/Sharique-Hasan/SaylaniBatch2-JavaScript/blob/master/A%20Smarter%20Way%20to%20Learn%20JavaScript.pdf) : Chapters 10 - 14 - Program structure ~ http://eloquentjavascript.net/02_program_structure.html -:star: You can also already go through the [review](https://github.com/HackYourFuture/JavaScript/blob/master/Week2/REVIEW.md) of the upcoming lecture. +### Review +- Go through the review of [week 1](https://github.com/HackYourFuture/JavaScript/blob/master/Week1/REVIEW.md) +- Go through the review of [week 2](https://github.com/HackYourFuture/JavaScript/blob/master/Week2/REVIEW.md) _Please go through the material and come to class prepared!_ diff --git a/Week2/README.md b/Week2/README.md index ed33a643d..2ab6571b6 100644 --- a/Week2/README.md +++ b/Week2/README.md @@ -17,10 +17,16 @@ In week three we will discuss the following topics: - [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype) -Refresher: +### Refresher: * Objects (*important to really understand them, read this if you are unsure! You may also read chapters 72, 73 and 74 if you have time and want to learn more*):
Chapters 70-71, 75 + +### Review +- Go through the review of [week 1](https://github.com/HackYourFuture/JavaScript/blob/master/Week1/REVIEW.md) +- Go through the review of [week 2](https://github.com/HackYourFuture/JavaScript/blob/master/Week2/REVIEW.md) +- Go through the review of [week 3](https://github.com/HackYourFuture/JavaScript/blob/master/Week3/REVIEW.md) + _Please go through the material and come to class prepared!_ diff --git a/Week3/MAKEME.md b/Week3/MAKEME.md index 7cac5b61c..923edd619 100644 --- a/Week3/MAKEME.md +++ b/Week3/MAKEME.md @@ -9,6 +9,8 @@ ## Step 1: Implement feedback +_Deadline Monday_ + Your fellow students have provided you with feedback in Trello. Your teachers have provided you with feedback in issues in Github. - Implement both feedback from Trello and Github. @@ -16,10 +18,14 @@ Your fellow students have provided you with feedback in Trello. Your teachers ha ## Step 2: Reorganize your Github +_Deadline Monday_ + Your Github should contain two repositories called hyf-javascript1 and hyf-commandline . Inside the JavaScript repository you should have three folders, called week1, week2, and week3 (or something similar). Inside these folders you should have the different assignments (a file per exercises). Ty and find proper names for the exercises that reflect somehow what is going on in the code. Avoid using spaces in your file names, this makes it harder to "run" you files. Also make sure that all your JavaScript files have a `.js` extension. ## Step 3: String and Array challenges +_Deadline Wednesday_ + 1. Strings! 1.1 Let's consider the following string: `let myString = "hello,this,is,a,difficult,to,read,sentence"` 1.2 Add the string to your file and console.log it. @@ -45,6 +51,8 @@ let favoriteAnimals = ['blowfish', 'capricorn', 'giraffe']; ## Step 4: Custom DOM manipulation challenge :mortar_board: +_Deadline Saturday_ + 1. Open a new js file and start by declaring an array that contains 10 strings. These strings should be of book titles you have read (or made up) and be lowercase without spaces or special characters so that you can use these later as Id's. (Example: Harry Potter's - The Chamber of Secrets -> `harry_potter_chamber_secrets`). 2. Create a basic html file called index.html and use it to load the js file, confirm the console.log show the array. (This is for debugging and making sure everything is in order. Delete it later when you're done :)) @@ -69,6 +77,8 @@ How to hand in your homework: ## Step 5: **FreeCodeCamp challenges:** +_Deadline Saturday_ + - https://www.freecodecamp.com/challenges/declare-javascript-objects-as-variables - https://www.freecodecamp.com/challenges/make-instances-of-objects-with-a-constructor-function - https://www.freecodecamp.com/challenges/make-unique-objects-by-passing-parameters-to-our-constructor diff --git a/Week3/README.md b/Week3/README.md index 21fc6d059..413fb2d0d 100644 --- a/Week3/README.md +++ b/Week3/README.md @@ -29,6 +29,11 @@ Links to MDN (Mozilla Developer Network) topics: - If you want to find out more about (mouse) events, check out this resource: https://www.quirksmode.org/js/events_mouse.html +### Review +- Go through the review of [week 1](https://github.com/HackYourFuture/JavaScript/blob/master/Week1/REVIEW.md) +- Go through the review of [week 2](https://github.com/HackYourFuture/JavaScript/blob/master/Week2/REVIEW.md) +- Go through the review of [week 3](https://github.com/HackYourFuture/JavaScript/blob/master/Week3/REVIEW.md) + _Please go through the material and come to class prepared!_ From 19c76db6e43106f8749d46f8715186fc7565a147 Mon Sep 17 00:00:00 2001 From: Jim Cramer Date: Mon, 30 Oct 2017 14:41:24 +0100 Subject: [PATCH 033/304] Added REVIEW Week 7 content --- Week7/REVIEW.md | 199 ++++++++++++++++++++++- Week7/assets/map-filter-reduce-emoji.png | Bin 0 -> 166660 bytes Week7/assets/reduce-bucket.png | Bin 0 -> 39136 bytes 3 files changed, 193 insertions(+), 6 deletions(-) create mode 100644 Week7/assets/map-filter-reduce-emoji.png create mode 100644 Week7/assets/reduce-bucket.png diff --git a/Week7/REVIEW.md b/Week7/REVIEW.md index 5dac5c731..428f99822 100644 --- a/Week7/REVIEW.md +++ b/Week7/REVIEW.md @@ -1,9 +1,196 @@ # REVIEW JavaScript week 7 +## Git Workflow + +To be provided + +## Map, filter, reduce + +The array methods **map()**, **filter()** and **reduce()** are best understood by looking at how they could be implemented if we were to write them ourselves. In the next few sections we will present simplified versions of the native implementations. We have prefixed the method names with `my` to distinguish them from the built-in versions. + +### Array#map\* + +The **map** method returns a new array where each element of the subject array is transformed by a user-supplied transformation (= _mapping_) function. + +```js +Array.prototype.myMap = function (mapFn) { + const arr = []; + for (let i = 0; i < this.length; i++) { + arr.push(mapFn(this[i], i, this)); + } + return arr; +}; +``` + +\* Array#map is a short-hand notation for Array.prototype.map. + +As you can see, the `mapFn` function is called with three arguments: + +1. the current array element to be transformed +2. the index of the element (starting with `0`) +3. the subject array itself + +As is usual in JavaScript you do not necessarily have to use all the parameters that were passed to the `mapFn` function. In fact, in many cases you will only need the first argument (the current array element). + +In the example below we will use the Array#map method to compute the squares of an array of numbers. + +```js +const numbers = [3, 5, 2, 7]; +const squares = numbers.map(num => num * num); +console.log(squares); // -> [9, 25, 4, 49] +``` + +### Array#filter + +The **filter()** method returns a new array with all elements that pass the test implemented by a user-supplied (predicate\*) function. + +```js +Array.prototype.myFilter = function (predicateFn) { + const arr = []; + for (let i = 0; i < this.length; i++) { + if (predicateFn(this[i], i, this)) { + arr.push(this[i]); + } + } + return arr; +}; +``` + +\*A predicate is a function that returns a boolean, whose value depends on its supplied arguments. + +Example: + +```js +const numbers= [6, 3 , 10, 1]; +const evenNumbers = numbers.filter(num => num % 2 === 0); +console.log(evenNumbers); // -> [6, 10] +``` + +### Array#reduce + +Of the three methods **map**, **filter** and **reduce**, the **reduce** method presents the most difficulty for new learners. The _Mozilla Developer Network_ (MDN) web site gives the following definition: + +> The reduce() method applies a function against an accumulator and each element in the array (from left to right) to reduce it to a single value\*\*. + +\*\*Although reference is made to a 'single value', this single value may well be an array or an object, as you will see later in the examples below. + +```js +Array.prototype.myReduce = function (reducerFn, initialValue) { + let accumulator = initialValue; + for (let i = 0; i < this.length; i++) { + accumulator = reducerFn(accumulator, this[i], i, this); + } + return accumulator; +}; +``` + +The whole process is visualised in the figure below (the term _bucket_ was used here to represent the accumulator). + +![image](assets/reduce-bucket.png) + +The **reduce()** method is the most flexible of the map/filter/reduce triplet. In fact, it is possible to rewrite **map()** and **filter** using **reduce()**. + +#### Using reduce() to filter + +```js +const arr = [6, 3, 10, 1]; +const evenNumbers = arr.reduce((acc, elem) => { + if (elem % 2 === 0) { + acc.push(elem); + } + return acc; +}, []); +console.log(evenNumbers); // -> [6, 10] +``` + +In this example our accumulator is an (initially empty) array. We put elements (in this case integer numbers) in the accumulator only when they are divisible by 2. + +#### Using reduce() to map + +In this example an array of integer numbers is mapped to an array of their squares. + +```js +const arr = [6, 3, 10, 1]; +const squares = arr.reduce((acc, elem) => { + acc.push(elem * elem); + return acc; +}, []); +console.log(squares); // -> [36, 9, 100, 1] +``` + +### Using reduce() to 'group by' + +In this example our accumulator is not an array, but an (initially empty) object. It groups the array elements by gender. + +```js +const arr = [ + { gender: 'F', name: 'Joyce'}, + { gender: 'M', name: 'Jim' }, + { gender: 'F', name: 'Lucy' }, + { gender: 'M', name: 'Ferdinand' } +]; +const groupedNames = arr.myReduce((acc, elem) => { + if (acc[elem.gender]) { + acc[elem.gender].push(elem); + } else { + acc[elem.gender] = [elem]; + } + return acc; +}, {}); +console.log(groupedNames); ``` -This review covers: - • Git Workflow - • Map, - • Reduce - • Filter -``` \ No newline at end of file + +Result: + +```js +{ + F: [ + { gender: 'F', name: 'Joyce' }, + { gender: 'F', name: 'Lucy' } + ], + M: [ + { gender: 'M', name: 'Jim' }, + { gender: 'M', name: 'Ferdinand' } + ] +} +``` + +### Method chaining + +The methods **map()**, **filter()** and **reduce()** each return a new array. This makes it possible to chain these methods and create a 'pipeline' of operations, to be applied in sequence. Let's take the last example, but now filtering out only those array elements for which the name starts with a 'J': + +```js +const arr = [ + { gender: 'F', name: 'Joyce' }, + { gender: 'M', name: 'Jim' }, + { gender: 'F', name: 'Lucy' }, + { gender: 'M', name: 'Ferdinand' } +]; +const groupedNames = arr + .filter(elem => elem.name.startsWith('J')) + .reduce((acc, elem) => { + if (acc[elem.gender]) { + acc[elem.gender].push(elem); + } else { + acc[elem.gender] = [elem]; + } + return acc; + }, {}); +console.log(groupedNames); +``` + +Result: + +```js +{ + F: [{ gender: 'F', name: 'Joyce' }], + M: [{ gender: 'M', name: 'Jim' }] +} +``` + +## In summary + +![image](assets/map-filter-reduce-emoji.png) + +Credit: http://www.globalnerdy.com/2016/06/23/map-filter-and-reduce-explained-using-emoji/ + diff --git a/Week7/assets/map-filter-reduce-emoji.png b/Week7/assets/map-filter-reduce-emoji.png new file mode 100644 index 0000000000000000000000000000000000000000..4765acbdd776b0b9a2de91286ed312a1002a162b GIT binary patch literal 166660 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'Gw~-t-^2lAq7a1ZO3SAy%=j--+ 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

{NyvTpI@oQT%;VjW@J-I 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%0AZ%l`k!4m7EJ>fy-a>|i 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 literal 0 HcmV?d00001 diff --git a/Week7/assets/reduce-bucket.png b/Week7/assets/reduce-bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..128b82165d2c5db0bf6d488f04e57b9fcde4fda3 GIT binary patch literal 39136 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∨W4%+sP86VCWeW-utMpyg65LM|#hTIyz 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 q)4@K&^kI?E7@!UP-{iY Date: Mon, 30 Oct 2017 16:04:50 +0100 Subject: [PATCH 034/304] Incorporated feedback from Maartje --- Week7/REVIEW.md | 68 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 62 insertions(+), 6 deletions(-) diff --git a/Week7/REVIEW.md b/Week7/REVIEW.md index 428f99822..0e2a8fb63 100644 --- a/Week7/REVIEW.md +++ b/Week7/REVIEW.md @@ -1,13 +1,23 @@ # REVIEW JavaScript week 7 +``` +This review covers: + • Git Workflow + • Map, + • Reduce + • Filter +``` + ## Git Workflow -To be provided +Please refer to [Tutorial for HackYourFuture Git pull requests and collaboration workflow](https://github.com/HackYourFuture/Git/blob/master/Lecture-3.md) ## Map, filter, reduce The array methods **map()**, **filter()** and **reduce()** are best understood by looking at how they could be implemented if we were to write them ourselves. In the next few sections we will present simplified versions of the native implementations. We have prefixed the method names with `my` to distinguish them from the built-in versions. +Each of the three methods use a `for` loop internally. You will notice that once you start using these methods the need for `for` loops in your own code is greatly reduced (hurray!). + ### Array#map\* The **map** method returns a new array where each element of the subject array is transformed by a user-supplied transformation (= _mapping_) function. @@ -24,15 +34,19 @@ Array.prototype.myMap = function (mapFn) { \* Array#map is a short-hand notation for Array.prototype.map. +Because the **map()** method is called on an array (using dot-notation), the value of `this` refers to that array itself (in this review called the _subject_ array). + +Internally, the **map()** method initializes a new, empty array to which it will push transformed elements, one by one, as it iterates through the subject array, calling the `mapFn` function for each individual element. When the loop has been completed, the new array is returned. Note that the subject array itself remains unmodified. + +`this[i]` refers to an element of the subject array at loop index 'i' (because `this` is a reference to the subject array). + As you can see, the `mapFn` function is called with three arguments: 1. the current array element to be transformed 2. the index of the element (starting with `0`) 3. the subject array itself -As is usual in JavaScript you do not necessarily have to use all the parameters that were passed to the `mapFn` function. In fact, in many cases you will only need the first argument (the current array element). - -In the example below we will use the Array#map method to compute the squares of an array of numbers. +In the example below we will use the Array#map method to create a new array that holds the squares of a subject array of numbers. The mapping function is represented by an ES6 fat arrow function:
`num => num * num` ```js const numbers = [3, 5, 2, 7]; @@ -40,6 +54,32 @@ const squares = numbers.map(num => num * num); console.log(squares); // -> [9, 25, 4, 49] ``` +For illustrative purposes we can add a `console.log` statement to our mapping function and see what we get passed as second and third argument: + +```js +const numbers = [3, 5, 2, 7]; +const mapFn = (num, index, arr) => { + console.log(num, index, arr); + return num * num; +} +const squares = numbers.map(mapFn); +console.log('squares', squares) +``` + +Output: + +```js +3 0 [ 3, 5, 2, 7 ] +5 1 [ 3, 5, 2, 7 ] +2 2 [ 3, 5, 2, 7 ] +7 3 [ 3, 5, 2, 7 ] +squares [ 9, 25, 4, 49 ] +``` + +For each of the first four lines in the output (from the `console.log` inside the `for` loop) the first number is the value of the current element, the second number is the current loop index value and the array value is the original subject array. + +As is usual in JavaScript you do not necessarily have to use all the parameters that were passed to the `mapFn` function. In fact, in many cases you will only need the first argument (the current array element) as we saw in the first example. + ### Array#filter The **filter()** method returns a new array with all elements that pass the test implemented by a user-supplied (predicate\*) function. @@ -58,7 +98,9 @@ Array.prototype.myFilter = function (predicateFn) { \*A predicate is a function that returns a boolean, whose value depends on its supplied arguments. -Example: +This method works in a similar fashion as the **map()** method, but now elements are only pushed to the new array if the predicate function returns `true`. + +In the example below the predicate function test whether the current element is even by checking whether its value divided by two has a remainder of zero. The result of this comparison (`true` or `false`) is the return value of the predicate and determines whether the current element gets added to the new array or not. ```js const numbers= [6, 3 , 10, 1]; @@ -84,6 +126,20 @@ Array.prototype.myReduce = function (reducerFn, initialValue) { }; ``` +The key to understanding the **reduce()** method is in the line: + +```js +accumulator = reducerFn(accumulator, this[i], i, this); +``` + +In the case we don't need the current loop index and the subject array in the reducer function (which is oftent the case), we can simplify this to: + +```js +accumulator = reducerFn(accumulator, this[i]); +``` + +From this line we can define the reducer function as a function that takes an accumulator value and the current array element and returns a new accumulator value. + The whole process is visualised in the figure below (the term _bucket_ was used here to represent the accumulator). ![image](assets/reduce-bucket.png) @@ -129,7 +185,7 @@ const arr = [ { gender: 'F', name: 'Lucy' }, { gender: 'M', name: 'Ferdinand' } ]; -const groupedNames = arr.myReduce((acc, elem) => { +const groupedNames = arr.reduce((acc, elem) => { if (acc[elem.gender]) { acc[elem.gender].push(elem); } else { From 864c90c007bc7ce0c611b3303216b6559213c7b1 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Tue, 31 Oct 2017 11:53:37 +0100 Subject: [PATCH 035/304] added link to review week7 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c3de99668..24df3096c 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Here you can find course content and homework for the JavaScript 1,2 and 3 modul |4.|• JSON
• Code debugging using the browser
• Functions + JSON/Arrays
• Code flow (order of execution)
• (capturing user input)
• Structuring code files|[Reading Week 4](https://github.com/HackYourFuture/JavaScript/tree/master/Week4)|[JS](https://github.com/HackYourFuture/JavaScript/tree/master/Week4/MAKEME.md) + [Git Homework Week 4](https://github.com/HackYourFuture/Git/blob/master/Lecture-1.md)|Review| |5.|• First Git Session with Unmesh :smiling_imp:
• Events
• Callbacks
• XHTTP Requests
• API calls|[Reading Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5)|[Homework Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week5/REVIEW.MD)| |6.|• Second Git Session :see_no_evil:
• Async VS Sync
• Polling
• Structure for a basic SPA
TEST :boom:|[Reading Week 6](https://github.com/HackYourFuture/JavaScript/tree/master/Week6)|[Homework Week 6](https://github.com/HackYourFuture/JavaScript/tree/master/Week6/MAKEME.md)|Review| -|7.|• Third Git Session (Git Workflow :muscle:)
• Map, reduce, filter
• Arrow functions|[Reading Week 7](https://github.com/HackYourFuture/JavaScript/tree/master/Week7)|[Homework Week 7](https://github.com/HackYourFuture/JavaScript/tree/master/Week7/MAKEME.md)|Review| +|7.|• Third Git Session (Git Workflow :muscle:)
• Map, reduce, filter
• Arrow functions|[Reading Week 7](https://github.com/HackYourFuture/JavaScript/tree/master/Week7)|[Homework Week 7](https://github.com/HackYourFuture/JavaScript/tree/master/Week7/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week7/REVIEW.md)| |8.|• (re)writing data structures (in JSON)
• Closures
• Promises
|[Reading Week 8](https://github.com/HackYourFuture/JavaScript/tree/master/Week8/README.md)|[Homework Week 8](https://github.com/HackYourFuture/JavaScript/tree/master/Week8/MAKEME.md)|Review| |9.| • Object Literals (and other patterns)
TEST :boom:|[Reading Week 9](https://github.com/HackYourFuture/JavaScript/blob/master/Week9/README.md)|[Homework Week 9](https://github.com/HackYourFuture/JavaScript/blob/master/Week9/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week9/REVIEW.md)| From 30409d38bf1a9a44e80540fe8f88617f81b15610 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Wed, 1 Nov 2017 13:11:42 +0100 Subject: [PATCH 036/304] changes shedule --- README.md | 10 +++++----- Week1/MAKEME.md | 9 ++++++++- Week2/README.md | 4 ++-- Week3/MAKEME.md | 3 +++ 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 24df3096c..423710fec 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,11 @@ Here you can find course content and homework for the JavaScript 1,2 and 3 modul |----|-----|----|--------|------| |0.|Preparation for your first JavaScript session|[Pre-reading](https://github.com/HackYourFuture/JavaScript/tree/master/Week0) + [CLI Reading Week 1](https://github.com/HackYourFuture/CommandLine/blob/master/Lecture-1.md)|-| |1.|• [CLI](https://github.com/HackYourFuture/CommandLine) session with Unmesh :heart:
• Intro JavaScript (What is it, where can you use it for)
• Variables [var, let, const]
• Basic Data types [Strings, Numbers, Arrays, Booleans]
• Operators|[Reading Week 1](https://github.com/HackYourFuture/JavaScript/tree/master/Week1/README.md) | [Homework Week 1](https://github.com/HackYourFuture/JavaScript/tree/master/Week1/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week1/REVIEW.md)| -|2.|• Advanced data types [Objects]
• Conditions
• Statements vs Expressions
• Loops (for/while)
• Functions
• Naming conventions|[Reading Week 2](https://github.com/HackYourFuture/JavaScript/tree/master/Week2/README.md)|[Homework Week 2](https://github.com/HackYourFuture/JavaScript/tree/master/Week2/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week2/REVIEW.md)| -|3.|• [CLI](https://github.com/HackYourFuture/CommandLine) session with Unmesh :balloon:
• Closures
• Scope
• Array Manipulations
• Basic DOM manipulations [img src, innerHTML]
• Code commenting|[Reading Week 3](https://github.com/HackYourFuture/JavaScript/tree/master/Week3)|[Homework Week 3](https://github.com/HackYourFuture/JavaScript/tree/master/Week3/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week3/REVIEW.md)| -|4.|• JSON
• Code debugging using the browser
• Functions + JSON/Arrays
• Code flow (order of execution)
• (capturing user input)
• Structuring code files|[Reading Week 4](https://github.com/HackYourFuture/JavaScript/tree/master/Week4)|[JS](https://github.com/HackYourFuture/JavaScript/tree/master/Week4/MAKEME.md) + [Git Homework Week 4](https://github.com/HackYourFuture/Git/blob/master/Lecture-1.md)|Review| -|5.|• First Git Session with Unmesh :smiling_imp:
• Events
• Callbacks
• XHTTP Requests
• API calls|[Reading Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5)|[Homework Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week5/REVIEW.MD)| -|6.|• Second Git Session :see_no_evil:
• Async VS Sync
• Polling
• Structure for a basic SPA
TEST :boom:|[Reading Week 6](https://github.com/HackYourFuture/JavaScript/tree/master/Week6)|[Homework Week 6](https://github.com/HackYourFuture/JavaScript/tree/master/Week6/MAKEME.md)|Review| +|2.|• [CLI](https://github.com/HackYourFuture/CommandLine) session with Unmesh :balloon:
• Advanced data types [Objects]
• Conditions
• Statements vs Expressions
• Loops (for/while)
• Functions
• Naming conventions|[Reading Week 2](https://github.com/HackYourFuture/JavaScript/tree/master/Week2/README.md)|[Homework Week 2](https://github.com/HackYourFuture/JavaScript/tree/master/Week2/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week2/REVIEW.md)| +|3.|• Closures
• Scope
• Array Manipulations
• Basic DOM manipulations [img src, innerHTML]
• Code commenting|[Reading Week 3](https://github.com/HackYourFuture/JavaScript/tree/master/Week3)|[Homework Week 3](https://github.com/HackYourFuture/JavaScript/tree/master/Week3/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week3/REVIEW.md)| +|4.|• First Git Session with Unmesh :smiling_imp:
• JSON
• Code debugging using the browser
• Functions + JSON/Arrays
• Code flow (order of execution)
• (capturing user input)
• Structuring code files|[Reading Week 4](https://github.com/HackYourFuture/JavaScript/tree/master/Week4)|[JS](https://github.com/HackYourFuture/JavaScript/tree/master/Week4/MAKEME.md)|Review| +|5.|• Second Git Session :see_no_evil:
• Events
• Callbacks
• XHTTP Requests
• API calls|[Reading Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5)|[Homework Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week5/REVIEW.MD)| +|6.|• Async VS Sync
• Polling
• Structure for a basic SPA
TEST :boom:|[Reading Week 6](https://github.com/HackYourFuture/JavaScript/tree/master/Week6)|[Homework Week 6](https://github.com/HackYourFuture/JavaScript/tree/master/Week6/MAKEME.md)|Review| |7.|• Third Git Session (Git Workflow :muscle:)
• Map, reduce, filter
• Arrow functions|[Reading Week 7](https://github.com/HackYourFuture/JavaScript/tree/master/Week7)|[Homework Week 7](https://github.com/HackYourFuture/JavaScript/tree/master/Week7/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week7/REVIEW.md)| |8.|• (re)writing data structures (in JSON)
• Closures
• Promises
|[Reading Week 8](https://github.com/HackYourFuture/JavaScript/tree/master/Week8/README.md)|[Homework Week 8](https://github.com/HackYourFuture/JavaScript/tree/master/Week8/MAKEME.md)|Review| |9.| • Object Literals (and other patterns)
TEST :boom:|[Reading Week 9](https://github.com/HackYourFuture/JavaScript/blob/master/Week9/README.md)|[Homework Week 9](https://github.com/HackYourFuture/JavaScript/blob/master/Week9/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week9/REVIEW.md)| diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index 65401a0d7..0539a9b3a 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -48,7 +48,14 @@ _Deadline Thursday_ > For all the following exercises create a new .js file. Try to find a proper name for each file or make a small comment about what it does inside for future reference. All these -1. Write a console.log statement saying "Hello World!" for each language that you know. +1. Write a `console.log` statement saying "Hello World!" for each language that you know. + +For example: +``` +Halo, dunia! // Indonesian +Ciao, mondo! // Italian +Hola, mundo! // Spanish +``` 2. Consider the following code: ``` diff --git a/Week2/README.md b/Week2/README.md index 2ab6571b6..56f7cd01a 100644 --- a/Week2/README.md +++ b/Week2/README.md @@ -12,8 +12,8 @@ In week three we will discuss the following topics: ### Here are resources that we like you to read as a preparation for the coming lecture. -- Closures: http://javascriptissexy.com/understand-javascript-closures-with-ease/ -- https://developer.mozilla.org/en/docs/Web/JavaScript/Closures +- [Closures](http://javascriptissexy.com/understand-javascript-closures-with-ease/) +- [MDN Closures](https://developer.mozilla.org/en/docs/Web/JavaScript/Closures) - [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype) diff --git a/Week3/MAKEME.md b/Week3/MAKEME.md index 923edd619..955701d54 100644 --- a/Week3/MAKEME.md +++ b/Week3/MAKEME.md @@ -2,11 +2,14 @@ >[Here](https://github.com/HackYourFuture/JavaScript/tree/master/Week3/README.md) you find the readings you have to complete before the fourth lecture. +Go here to see the [Git Homework](https://github.com/HackYourFuture/Git/blob/master/Lecture-1.md) + ## Step 0 review: - Go through the review of [the first week](https://github.com/HackYourFuture/JavaScript/blob/master/Week1/REVIEW.md) (Work in progress, update this week :wrench:) - Go through the review of [the second week](https://github.com/HackYourFuture/JavaScript/blob/master/Week2/REVIEW.md) (work in progress, update this week :nut_and_bolt:) - Go through the review of [the third week](https://github.com/HackYourFuture/JavaScript/blob/master/Week3/REVIEW.md) + ## Step 1: Implement feedback _Deadline Monday_ From 9f136f65d47195f22ce14ec25a4fa58f8582f165 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 5 Nov 2017 14:23:16 +0100 Subject: [PATCH 037/304] chanhed homework week2 --- Week1/MAKEME.md | 5 +++-- Week2/MAKEME.md | 57 ++++++++++++++++++++++++++++++++++--------------- Week9/MAKEME.md | 2 +- 3 files changed, 44 insertions(+), 20 deletions(-) diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index 0539a9b3a..67bfb7459 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -114,7 +114,8 @@ console.log('I'm awesome');
6.3 Console.log your array.
6.4 Create an array that has your favorite animals inside
6.5 Log your array -
6.6 Add a statement that adds Daan's favorite animal (baby pig) to the existing array +
6.6 Add a statement that adds Daan's favorite animal (baby pig) to the *existing array* +
6.7 Log your new array! 7. More strings @@ -150,7 +151,7 @@ if () { 9.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does. 10. Write a program to answer the following questions: - 10.1 Can you store multiple types in an array? Numbers and strings? + 10.1 Can you store multiple types in an array? Numbers and strings? Make an example that illustrates your answer.
10.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this?
10.3 Add console.log statements to the above program's in which you show that you understand the concepts (just like you've done in the above assignments). diff --git a/Week2/MAKEME.md b/Week2/MAKEME.md index efec8f539..6de23e768 100644 --- a/Week2/MAKEME.md +++ b/Week2/MAKEME.md @@ -2,6 +2,12 @@ >[Here](https://github.com/HackYourFuture/JavaScript/tree/master/Week2/README.md) you find the readings you have to complete before the third lecture. +## Step 0: Feedback + +_Deadline Monday_ + +Provide feedback to step 1 and step 3 of the homework of last week to one of your fellow students. You will be assigned to one of the assignments by the class lead of this week. + ## Step 1: Recap/Read - Have a look at [The Secret Life of JavaScript Primitives](https://javascriptweblog.wordpress.com/2010/09/27/the-secret-life-of-javascript-primitives/) @@ -19,12 +25,23 @@
8. Collections
11. When Things Go Wrong +## Step 3: Rover the Robot + +Go and try out this cool game: http://hyf-robot.herokuapp.com/index.html, there are different levels, see how far you can get! + + ## Step 3: JavaScript + +_Deadline Thursday_ + > For all the following exercises create a new .js file. Try to find a proper name for each file or make a small comment about what it does inside for future reference +*IMPORTANT NOTE* +In each assignment write at least two `console.log` statements to verify if your code works correctly. In other words proof that you code works as expected. If you need inspiration look at the steps defined in the assignments from last week. + 1. Create a function that takes 3 arguments and returns the sum of the three arguments. -2. Create a function named `colorCar` that receives a color, and prints out, "a red car" for example. (Hint: put it in your file and run it like before.) +2. Create a function named `colorCar` that receives a color, and prints out, "a red car" for example. 3. Create an object and a function that takes the object as a parameter and prints out all of its names and values. @@ -53,10 +70,14 @@ if (3 == 3) { 12. Create an empty object -13. Create a function that takes two objects as parameters and compares them. You will actually need to write two functions — one that compares with `==` and one that compares with `===`. Remember that objects can have objects inside of them so you'll need to find a way to compare every element of every object (types and values). For example: +13. Create an object that contains the teachers that you have had so far for the different modules. + +14. Add a property to the object you just created that contains the languages that they have taught you. + + +15. We saw that we can pass functions as arguments to other functions. Your task is to write a function that takes another function as an argument and runs it. ```js function foo(func) { @@ -92,12 +113,12 @@ if (3 == 3) { ``` -15. Write some code to test two arrays for equality using `==` and `===`. Test the following: +16. Write some code to test two arrays for equality using `==` and `===`. Test the following: ```js - var x = [1,2,3]; - var y = [1,2,3]; - var z = y; + let x = [1,2,3]; + let y = [1,2,3]; + let z = y; ``` What do you think will happen with `x == y`, `x === y` and `z == y` and `z == x`? Prove it! @@ -110,20 +131,20 @@ Check out this [Fiddle](http://jsfiddle.net/jimschubert/85M4z/). You need to ope More insights from this [Stack Overflow question](http://stackoverflow.com/questions/22395357/how-to-compare-two-arrays-are-equal-using-javascript). -16. Take a look at the following code: +17. Take a look at the following code: ```js - var o1 = { foo: 'bar' }; - var o2 = { foo: 'bar' }; - var o3 = o2; + let o1 = { foo: 'bar' }; + let o2 = { foo: 'bar' }; + let o3 = o2; ``` - Show that changing `o2` changes `o3` (or not) and changing ~~`o2` changes `o3`~~ `o1` changes `o3`(or not). +Show that changing `o2` changes `o3` (or not) and changing ~~`o2` changes `o3`~~ `o1` changes `o3`(or not). - Does the order that you assign (`o3 = o2` or `o2 = o3`) matter? {Jim Cramer: ???} +Does the order that you assign (`o3 = o2` or `o2 = o3`) matter? {Jim Cramer: ???} -17. What does the following code return? (And why?) +18. What does the following code return? (And why?) ```js let bar = 42; typeof typeof bar; @@ -134,6 +155,8 @@ typeof typeof bar; ## Step 4: **Finish basic freeCodeCamp challenges:** +_Deadline Saturday_ + Go back to FreeCodeCamp, start where you left of and finish the rest of the Basic JavaScript challenges. Please make sure you REALLY understand the exercises below: diff --git a/Week9/MAKEME.md b/Week9/MAKEME.md index b5203ca60..fe15a4603 100644 --- a/Week9/MAKEME.md +++ b/Week9/MAKEME.md @@ -19,7 +19,7 @@ 2. What will be the output of the following code - and more importantly - WHY? ```js -for (let i = 0; i < 3; i++) { +for (var i = 0; i < 3; i++) { setTimeout(function() { alert(i); }, 1000 + i); } ``` From 5e6a8041bbe27e36a0b4e13b7076a2ef1edb27d2 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 5 Nov 2017 14:30:17 +0100 Subject: [PATCH 038/304] changes step numbers --- Week2/MAKEME.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Week2/MAKEME.md b/Week2/MAKEME.md index 6de23e768..99673ef5b 100644 --- a/Week2/MAKEME.md +++ b/Week2/MAKEME.md @@ -30,7 +30,7 @@ Provide feedback to step 1 and step 3 of the homework of last week to one of you Go and try out this cool game: http://hyf-robot.herokuapp.com/index.html, there are different levels, see how far you can get! -## Step 3: JavaScript +## Step 4: JavaScript _Deadline Thursday_ @@ -153,7 +153,7 @@ typeof typeof bar; > ‘Coerce' means to try to change - so coercing `var x = '6'` to number means trying to change the type to number temporarily. -## Step 4: **Finish basic freeCodeCamp challenges:** +## Step 5: **Finish basic freeCodeCamp challenges:** _Deadline Saturday_ From 0bb3d2c0bad892b95fef45455de0ff1f2569a2cb Mon Sep 17 00:00:00 2001 From: mkruijt Date: Sun, 5 Nov 2017 15:09:49 +0100 Subject: [PATCH 039/304] added rover the robot --- Week2/MAKEME.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Week2/MAKEME.md b/Week2/MAKEME.md index 99673ef5b..2c1134ce0 100644 --- a/Week2/MAKEME.md +++ b/Week2/MAKEME.md @@ -11,8 +11,8 @@ Provide feedback to step 1 and step 3 of the homework of last week to one of you ## Step 1: Recap/Read - Have a look at [The Secret Life of JavaScript Primitives](https://javascriptweblog.wordpress.com/2010/09/27/the-secret-life-of-javascript-primitives/) -- Go through the review of [last week](https://github.com/HackYourFuture/JavaScript/blob/master/Week1/REVIEW.md) (Work in progress, update this week :wrench:) -- Go through the review of [this week](https://github.com/HackYourFuture/JavaScript/blob/master/Week2/REVIEW.md) (work in progress, update this week :nut_and_bolt:) +- Go through the review of [last week](https://github.com/HackYourFuture/JavaScript/blob/master/Week1/REVIEW.md) +- Go through the review of [this week](https://github.com/HackYourFuture/JavaScript/blob/master/Week2/REVIEW.md) ## Step 2: Watch From 5e781ae0853f2abbfd0d62615cc949bfa551376b Mon Sep 17 00:00:00 2001 From: Jim Cramer Date: Wed, 8 Nov 2017 16:40:22 +0100 Subject: [PATCH 040/304] Added VSCode Tips --- VSCodeTips/VSCodeTips.md | 168 ++++++++++++++++++ ...6-f1f76762-6044-11e7-831d-dd2a6551f027.PNG | Bin 0 -> 20734 bytes ...7-f1fa8406-6044-11e7-8284-b51cd1251921.PNG | Bin 0 -> 20758 bytes ...4-94afa762-604f-11e7-9d77-0d590bfccc19.png | Bin 0 -> 8994 bytes ...3-64ae6c98-6053-11e7-8b6c-2bec3400ccd3.PNG | Bin 0 -> 2558 bytes ...5-592063d4-605a-11e7-9e29-dfb02f1aed22.png | Bin 0 -> 8671 bytes ...0-393c5a82-60d2-11e7-8713-648ec54abbed.png | Bin 0 -> 46500 bytes ...6-3d44da32-60d2-11e7-8f34-0bc0579a10c3.png | Bin 0 -> 42796 bytes ...1-189a16f4-60d5-11e7-87ee-996cf97921ac.png | Bin 0 -> 52602 bytes ...0-5db15d4a-6172-11e7-953f-347c592b4e4f.png | Bin 0 -> 1555 bytes Week0/README.md | 1 + 11 files changed, 169 insertions(+) create mode 100644 VSCodeTips/VSCodeTips.md create mode 100644 VSCodeTips/assets/27807986-f1f76762-6044-11e7-831d-dd2a6551f027.PNG create mode 100644 VSCodeTips/assets/27807987-f1fa8406-6044-11e7-8284-b51cd1251921.PNG create mode 100644 VSCodeTips/assets/27809404-94afa762-604f-11e7-9d77-0d590bfccc19.png create mode 100644 VSCodeTips/assets/27809813-64ae6c98-6053-11e7-8b6c-2bec3400ccd3.PNG create mode 100644 VSCodeTips/assets/27810425-592063d4-605a-11e7-9e29-dfb02f1aed22.png create mode 100644 VSCodeTips/assets/27833250-393c5a82-60d2-11e7-8713-648ec54abbed.png create mode 100644 VSCodeTips/assets/27833256-3d44da32-60d2-11e7-8f34-0bc0579a10c3.png create mode 100644 VSCodeTips/assets/27833921-189a16f4-60d5-11e7-87ee-996cf97921ac.png create mode 100644 VSCodeTips/assets/27857540-5db15d4a-6172-11e7-953f-347c592b4e4f.png diff --git a/VSCodeTips/VSCodeTips.md b/VSCodeTips/VSCodeTips.md new file mode 100644 index 000000000..e5590d4bd --- /dev/null +++ b/VSCodeTips/VSCodeTips.md @@ -0,0 +1,168 @@ +# VSCode Tips + +Here are some tips for getting up to speed with VSCode as you progress through this course. + +## Some useful extensions + +VSCode can be extended with _extensions_. There are two that we recommend you install from day 1. + +**Spell Checker**. We fully understand that you guys sometimes have difficulty with the correct English spelling when choosing names for variables and functions in your JavaScript programs. That is nothing to be ashamed of, but why not get some help from a handy extension? + +**ESLint**. This extension can check your JavaScript code for obvious errors, such as undefined variables, unused variables, etc. + +### Installation instructions + +1. Start up VSCode. + +2. Press the last button in the area in left margin (called the Activity Bar), shown below: +
![extensions-btn](assets/27857540-5db15d4a-6172-11e7-953f-347c592b4e4f.png) + +3. In the input field in the upper left corner, type `code spellchecker` as pictured here: + + ![Figure 1. Spell checker extension](assets/27807986-f1f76762-6044-11e7-831d-dd2a6551f027.PNG) + + (The indication 122K in this picture means that this extension has been downloaded 122,000 times. The five star rating indicates users like it a lot.) + +4. Press the green `install` button of **Code Spellchecker**. +5. When the installation has finished, install the ESLint extension in a similar fashion (1.2 million downloads!): + + ![Figure 2. ESLint extension](assets/27807987-f1fa8406-6044-11e7-8284-b51cd1251921.PNG) + +6. When this second extension has finished installing you will notice that the green `install` button changes to a blue `reload` button. But no need to press this button at this time (no harm done if you did). +7. You now need to install a global Node package to support ESLint. Open a terminal window in VSCode by selecting **View**, **Integrated Terminal** from the menu bar. +8. A terminal window opens in the lower half of the VSCode window. In this window, type the command below (on Linux and MacOS systems you may need to prefix this command with `sudo`, e.g. `sudo npm ...`): + + ``` + npm install -g eslint + ``` + + +9. Once the installation has finished close VSCode for now. + +## Using VSCode for your homework + +You’ll get the most out of VSCode if you organise your work in folders, say a folder for each week in the JavaScript module. + +(Later in the course you will be “cloning” Git repositories into local folders as the basis for your homework or projects.) + +To start work with VSCode in particular folder, start VSCode and open the relevant folder: from the menu, select **File**, **Open Folder**. VSCode will now open this folder to be your "project folder", until you close VSCode or open another folder. + +Assuming that you will use the folder for JavaScript work, you need to create a special file inside of it as required by ESlint. + +From the menu, select **View**, **Command Palette…** and type `create` as show in the picture below. Select: **Create** '.eslintrc.json' File. + +![Figure 3. Create '.eslintrc.json' File](assets/27809404-94afa762-604f-11e7-9d77-0d590bfccc19.png) + +The `.eslintrc.json` file will now be created in the project folder. No need to touch this file at this time, it just needs to sit in your project folder. Later in the course you may wish to add additional "rules" to this file for more stringent code checking. + +## Creating your JavaScript file + +You are now ready to start adding your first JavaScript file. + +1. From the menu, select **File**, **New File**. This will create a new, empty file named "Untitled-1". +2. Select **File**, **Save** from the menu and give your file a an appropriate name. Make sure that you give it an extension ".js" to make it a JavaScript file. +3. Start entering your JavaScript code in the new file. Be on the watch out for green squirly underlines. These are warnings from either ESLint or the Spell Checker that something might be wrong. +4. If you see green squirly underlines, hover your mouse pointer over the underlined text and a tooltip will appear that explains what might be wrong. +5. You can also open the "problem" panel by selecting **View**, **Problems** from the menu to see any problems identified. +6. Pay attention also to the lower left part of the VSCode window, i.e. the status bar. It gives an indication of the number of errors and warnings issued. In the picture below there are zero errors, 7 warnings (usually from ESLint) and 14 informational messages (usually from the spell checker). + + ![Figure 4. Error, warning and message indicators](assets/27809813-64ae6c98-6053-11e7-8b6c-2bec3400ccd3.PNG) + +## Some useful short-cut commands + +In the previous section we frequently referred you to the menu bar to select commands. As you get more proficient with VSCode you may want to inspect these menus a little closer and take note of the short-cut commands listed in their right margin. For example, the short-cut command for **File**, **New** is listed as Ctrl+N (press `Ctrl` and `N` keys simultaneously) on a Windows or Linux PC and ⌘N on a Mac. + +Here are some short-cut commands that you will use many times a day and that we recommend you familiarise yourself with from day 1: + +| Operation | Windows | Mac | Linux | +| --------- | ------- | ----- | ----- | +| **Format Document** (make it pretty) | Shift‑Alt‑F | ⇧⌥F| Ctrl‑Shift‑I | +| **Search** (Find)| Ctrl+F | ⌘F | Ctrl+F | +| **Replace** (Find and replace) | Ctrl+H | ⌥⌘F | Ctrl+H | +| **Rename Symbol** (change all names in file to a different name) | F2 | F2 | F2 | +| Open an **Integrated Terminal** window in VSCode | Ctrl+' | ⌃\` | Ctrl+' | + +- **Format Document**. This command reformats your JavaScript file in a generally accepted standard format, using proper indenting, proper use of spaces, placing of curly braces and more. A neatly formatted document helps you to better understand your own code and your teachers, mentors and fellow students will love your for it too when they review your work. + + *With VSCode at your finger tips there is no longer any excuse for submitting poorly formatted homework!* + +- **Search**. Search for specified text. +- **Replace**. Replace specified text by some other text. + + In the figure below the **Replace** pop-up window is shown. The **Search** pop-up is similar, but with one input field only. + + ![Figure 5. Search and Replace](assets/27810425-592063d4-605a-11e7-9e29-dfb02f1aed22.png) + + - The `Aa` button activates the **Match Case** option. + - The `Ab|` button matches **Whole Words Only**. + - The `.*` button allow you to search using _regular expressions_, which you may encounter in later modules as an advanced JavaScript programming topic. + - The `c-b` button next to the second input field replaces the next occurrence of the matched text. + - The `ab-ac` button replaces **all** occurrences of the matched text. + - The left and right arrows move the cursor to the previous and next match. + - To get rid of the pop-up press `Esc` or press the `x` button. + +- **Rename Symbol**. This command renames all occurrences of a JavaScript variable or function name. To do so, move the text cursor to the variable or function name and press F2. A small pop-up window will appear in which you can type a new name. Press Enter to finalise the change or Esc to cancel it. + +- **Open an Integrated Terminal window**. We already covered this when we mentioned the **View**, **Integrated Terminal** menu command. + +## Running and debugging your code with the VSCode Node debugger + +If your JavaScript program is contained in a single file the easiest way to run and examine your code is the start straight in VSCode. Before you can run it you need to do a small preparation. This needs to be done only once per project folder. + +1. As illustrated in the figure below, press the **Debug** button in the left margin as indicated by the red triangle. + + ![debug_1](assets/27833250-393c5a82-60d2-11e7-8713-648ec54abbed.png) + +2. You'll see the Debugger Pane in the left hand side of the screen as shown below. Press the "cog" button as indicated by the red triangle. + + ![debug_2](assets/27833256-3d44da32-60d2-11e7-8f34-0bc0579a10c3.png) + +3. Next you will prompted to select an environment. Choose `Node.js`. This produces a JSON file, displayed in a new editor tab with a contents as shown below. + + ``` + { + // Use IntelliSense to learn about possible Node.js debug attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Launch Program", + "program": "${file}" + } + ] + } + ``` + + At this his time no changes are necessary to this file. You can just close the editor tab. + +4. Next, press the **Explorer** button in the left margin as indicated by the red triangle in the figure below. + + ![debug_3](assets/27833921-189a16f4-60d5-11e7-87ee-996cf97921ac.png) + +5. Observe that VSCode has created a `.vscode` subfolder in your project folder where it keeps the JSON file just created and potentially other VSCode settings. +6. You can now run your code in the debugger. Switch to the editor tab contains your program and press the green triangular button or, alternatively, press F5. +7. Note that when your program finishes execution the debugger is still active. You can stop it by pressing the square red button. + +If you do not really need to debug your program (e.g., by placing breakpoints) etc, you may prefer to run your program in a terminal window. You can open an Integrated Terminal as explained earlier and type: + +``` +node prog.js +``` + +Replace `prog.js` with the actual file name of your program. + +If you want to run your program in terminal window independent of VSCode you should make sure you are in the same directory as the program you want to run. + + +### Placing break points and inspecting variables + +This is covered in class. + +### Further information + +Please note that VSCode is actively being developed. At present there is a monthly release cycle, so don't be surprised when you are prompted once a month to update to the latest version. We advise you to update when prompted (naturally, not when you are in the middle something that you don't want interrupted). + +You can find detailed information about VSCode at the [VSCode web site](https://code.visualstudio.com/docs). diff --git a/VSCodeTips/assets/27807986-f1f76762-6044-11e7-831d-dd2a6551f027.PNG b/VSCodeTips/assets/27807986-f1f76762-6044-11e7-831d-dd2a6551f027.PNG new file mode 100644 index 0000000000000000000000000000000000000000..f6bb34e60c9da7d876de7189dc6351c27fa5daa4 GIT binary patch literal 20734 zcmb5Vby$>b_bx0-49x%%(nEJj=Kz9qDJdb{-3`Ogh?3F+DxK2OBQ2c*(v5WY9`t$N z{rvWEeEazJAH+Q~_f@mjd9Jn2bw{eH$YEnV!+7-Q5%x=Y8I4DekYI@amjS4V-x~y8 z)rdbxt{QUSM`eTLTZju}ODSckM~^DsVcwXaAgU z?wT|3xu%fQVq5T&@bOSa;D^U2#+*01{=jI=*K)=ib%Cbq5AUJjkZa&_1Fsg#4^|d# zfQG(1V!R!cOi186i&LQ2dXmw{2EqRfLJ#J=S!BN$o^foaPd9`T2i}MXYHG$t$N4-)p1>){X^R2ZxdItW(ZJWkyf6{NIn5Y*^! zRTiKVH1dukPBmLGs4+En13T~605+7EJ*eZ=>I|KOs z{4T=4>R`lO?(<^e-c8v-j1ODo$MdlLj{Un6ORr1IR$`Fb1vxRzQ!XPMnI7vKS9fyO z`V7t}nk|!0WBDv*8bqOokK!q$2CLc01)X}#D{2IuU|JU#co z<&&PJsl{?CKk8#)*#g=tTT&`2rYAYwAG5Qgu+d1RwMfdb;qtbh`sfwl!m?c1xv`>W z`F>9&P7CvYn;Sft%*1qdBGF5?{FMF9U%szrS)BhM|YesbvOjNFlKXNTK$<+M9|(&4<>Vj9)H8|Y0{^} z;)c=AQcLIVU;Hd}{B=wkk~3wE8lx(BpHPscH5+0yQPYmF$2$yXxN|+zQZ60bSp}#N zXcEFJhG|{P_=ccb-WfVj8l&mNMMV!LDW{-imZ5l^u7-@Ct=g2o{J|(7);qZjH5FsM z66;CUD#_KkjQ`G$jZHKc%9tKY%*gGR<3zeD_t}7DoI%7qEm+Q&1b6BHwcIdtcpu{>q`S^g-jQ-Nt+)!*4r2Dzq6%#XDviW@~QD^kEgCB zYL1h--=n>B!XhQ_{_zFS>!EpQA+M#HTZ^}baE#&Bc6=Cdz<~(DD^hysXBMuX-jdNU zgHI!6dbn_|zSrG2=%ye;+4K1FH-g$Dw8Lw0$LKJ0I6R?>k&16sy8)?FJsVu3qsQFG zE0z-rqnq2e;EZy-Hk}Oha%U{dJLK*}?_XE1%e%9Ntg;ms(&jUgh(mj*^cyx_t5(&j zO`#(E_li{q1j%*X76^n)11Uh{@#+kuqXnZAc^H}pg?-9{p3EG_>3)~|gOtq$RKitt49C{v~3~>I7N6ra>m!hM@jH@ zEe8cYM5x_#+R<8q5?AZ-&;7b*Ey0RaWE?=IYLt$ikI;=Dy<&Kxdp#?32`z#YkeNQQ zTc6`>AvIj-ZQM3eu{$#n!YGf-$(5^MUb(a!r!N>)F1J@Q$PL|DqjkFm%LzPXgU+No>BTjgQbRYD|s30!->?D{W^`n3ePRfrG?2ebO zx(N1`UA}mdC8nRIILtnot@cy!Iw*gh_+by*{R?p#21bssQ^vt#6?pKMkMRN|;Widv z`(Zw%+7_o?+Trj^)V%Z1H7#EhFB~f_g(vwjJeG0NIUZlQv7QU!_UXsz*nhaJMS(T* z;G!CFksQhRZ=DLcpyG_Fmt9%e1#C=ZAKoZX{v8Llz_Sz4P?ZH&!zFHjzbp z8a5m-s&pLUMNKlAxEf3?MdjVSb|u1mr@Gdsuk43Sjy?&7eVlY_BXnLGc$1SIzI*)= zkhV)@po7^i*(_Ghr~!l#mMzI_ba3f@hiAlln-CBe-LS=|So;q*y*%ty=he${6589M z*1}~D53=r2JHSBej*dTeok@kVt3LZVJuo$^fpIG3ZrE{9L}s{yIVH+CYhocKhCINp zzj@0PL3%TWS3>!CEjVGF>nAf{lDJLjIFkGro5L=IcJyGy8P(El-bG%8RDwLJ7-t4$ z$VQXCno8h$wfaB{Lx$}8#(XmOWRr%YVvS(F%QWp!4Y8g@+HnM>P)+`v2Zf2qc#TPh z?Xvh$Tr}YG(S4_AD5hzb9zeU{h=U+P%~27FFk+~xd?*7V`PoapR~~Y5%?NGe*Jywe zWJR-ebN!^T&BDX^_5IC-^)LAo=OJ=DRWp7#$l*1+(WI=r^Y$aY0YZTl;A!=~pj@zM z@&xgow+hA+Jqo%khEwsUI;i(QkP0T6(9xqpFJ&kRQ00V@rdVAz`|${G0=MmJYI>a= zCPPEK@T5#xWb=g|HMiSHC(5KNj=dRo`b3E;(3#SC))SyQD(CZY+^J!&a!@aWS8?rG zM3RUGCnc8CUf(Oofw0F9fk@XuCCKuuxxpk9s*B0$%6}G@Q`XA6oW{aczOPk= z^px@Ht4GYH>fz5<5Si@Q%Jb*qPHV3r8dib1u9eFq46aoIj1bpHGf`D1&O&8ec2{bX zg~t9JOZD5-Ccia5*HNV56f9-(x>!{j&pLmEf;EQSsOQ_P{g=|v#88UfRoE@@3pxb6 zi$s4uPDtRJzbV+7AI24jl6xPUf2Y$l|3xe*w1)qu&?p}P3oGluCDmbTNmz^_tNHr)cARJ52shc|N*VWdxR%UamC9j3x zBqO*-fsR?Los3eUf(Ch-#`WdrksqLV-z2pRotS+*%Tws4^vi#e#zzB&1DC=$@@ikv31ASA}G z|11BUq@oZ9l@Uj#~u^C@EmVB1AX7L5)_ImsvIs~(ZF9Y?2m zrGoi&oz3`zXVa*`M6~ujKlA|PQ(<4Vy1LoL+s^v$2&ZH&`8TnJn;2B-h+&CkOAv(P z|D+8DaAS>8EzX&&;}Vd*^=>oqHgjClS2)A!;HP7C!wyzoJLujmcF2xRoSaS#&T_ z*17oa_KMcz8;^B$A+ix$v^o$Hs7Y!-sBDA@33N-~pUahy!- znS2*w6a=|hOGQR$|NU5Xj!Y-(Uy9RH%Uym-M1%M+13Q!YAx1PFf)5jj5(~V-{*3$* zQ$ee#;}0u-LZN3dGy%Rv%sU!_|Fr!79Cp-fbJ%1we%=M1D!7t{Rn+nod%NlHy$K9c z2E2qtj#~N|wF`huA01fWv5hq_@DT1b1LjQBla7ZyxO}{@3`U^Yb{G z`6~1~@@Pe&h?Tm;@_bxJa-0TfR14u2asEDa6C#*(+ z;Qa(!x6r8NP|6Y0r*$*S%ms~u`~}BH3fZ{bLb63IEm=P{o)(4jn9~0ibwQ5P`3*^; z^*@kdLRMuXH(w`3an(PQsxar6W4P-&N<-E+=705$Nrdb;`lNxj#&pmjcyTak{k&K0 zcHB_VthoQ9B_Sb4;NwPc_>V^1_IbM}vp2c&@k>IcxcEjKJ~U z_I8M|Q?!SlGK3{72(LDp@6XgJM*)AxE;Mu-&{b)7=H_J|tf& z(_((x5?tYl_}DuJFjx(D_t#qh3!E!UiuS5F{I%ZWPh{GJ)a1$VR-dMjq9M%9pG`-7 ztRK{v=vwoi$xWo-jC*_2n*xt`&^~d#XhXpo459S_=|bJ4dug-ZZ0KoS<{gMv-s15?)RwtKrR3Io`fvynWraiO`Yaw2sipr319}o zMhP3IjV%kjGH^%7PIwGqh_%d#(zO3($HSrs87@oWV&;g&qtR9cNW2SQ6OkUSG2v17 zAS9e`kWG|8_SN^B#M4&*RT~W1M!lIr9Wi_Z!79scCd!&&MaB)kul9nP;O7ODZ1bP5 zpeDn%k3+bpOudA=@Y2)nUsC38_Yfky^7D`^ps=uzX6#h3T#X`;)Byy68w+B2CXmO? zHq1HO4T0!V>5d>C@IH}DbLG{L2>)SGeZSgmftkbc%--;onCf0|2Drj@Ez=qFX;i@N zYaj!+`@2M_4u!|C835BoT)YGhF$r)w*FR*~1K-vuM(A?ML=2yP9%kD}B|pT1 z(?NJj3MD7pYo#(%w6ByQPTV29Z#Y*TyjnUUJgxiv@6hBhvYZ`xV!PB&Mc)d4Cg{VQFKm8A&v_|4BD^2x#g>6$KAlx7nn)u8`@n3tFfn*5w zf6@#m_={lJ&omUQ@Po}CZg=B;N&JA;saQE!wk&Gynf7WMYyU6!P09s=?B|Rf|DBwK z!4rZ1Nk}wcCdmu1rr0~}0-OhYcR@oyJt-b25&K`)|AKym!y29ujP|_<@*uDG*G8@S$f+e-IYFiu3=EPL#@ubovpQSgM-GDEc4T z;b~XlWMeZUfeP)L02Q7Tg*G7)IW8>IHc%p}7MgeP16y?k$uc2Ue1u5$;9N0C(Q41s zC{|Jau-g+N7+;QX4<;Mf5|>dWgL;J&+Ka;mww82{C)R-sQX+_vp{@e(8EHbw&=@G} zYYcpwI@j@^u{VD|jPHW^cf_!{s9~1P?cK1lS6X@tl|{wGDiFQc{o=-)a~Xghh4=4j z@TLs^Y-Z-w{~R^v1tGEzDGTlJ!i0M+f9DpgZ&v6c*1n|i zI!PrBd>jX@mA0>BsRQu4QxLwGSDKy0@pT8XlsyhSDA27X#__NZk=^zZ?yRX0`*alP z<1yKHF*%IBxjTa+QtCkw)|^hHyQVO?3k_|4@sU7Ix}v#Or;Cx0=15d|WV(d_hl+Q5 zN35RUbs&H7Dw*FsE^F$Hb8VUJ)Gfp3O%T2(v_eCmK;*MFv(Jorp;R2@e ztBwoe6nG;C-#9l=udYt}*}^M&9m|9g)@d_9n99T;9JJu!Z6`(<%Y&gh)#$=R)aCp0 z43Aud2w7sCbpZ!WJu$7wY=)&|M;p|2r2zTaD6M382N8X{NgE&_p&gz3fBHfGD^ zUR6*g`Y~&Zi4~_RHP~UJP-f*$$3Rmp!hVY7P^jITuF%nu zIO>bw8R+Rde}da$Yjj0ob=}r5OA8Hx> zCN>P^07EU`erC+8$4EQFKoY9|b%f>fZExx*H7of*$HtS2zL|v%22kJls0A??q}BDG z{kF)2!#H1l)wB7vIX&YN8{r9G9RGXFYTP(N)~*th8S%9983e+Ovs{Uz(^R`5?rR-A z3P?g&-E2UXWNE!_@T`e$ zrfkQDkp4gR)&_DrdstgT*neH8EoR;k?wj zhh(LS1$;&RZt9Z4pgw4AW_Gss#Oz-z^5GRw18!4)6sw?$eCHsKPLh;`^{<;q{*ko`2C;ZxLXNb)|`eORbg6#@d=@EJ4csPtqguu<FkgPq4EbJXO=bdC9}B{}54B%UV&R;~}Um@nOjnPpdyW#C9w1*z1_-QW=o3AYRX!^?yZEr924 z>6B{q*nLN`1_3~}Q#6_f=h9vImE4Ll?ST|SCYGo)g!&MWumeW}XL<3E0WjeL$DYtb z0Ylund0hbJ6fyh_`{#<~-Ug?kv12;cEVj^Zlj{oGDUqbkzI0pA@NGc>m6J9aolRk;S#kKarF7I&%&82nuE zOF%xv5Dx<{WP#PO1+2ku9?_i9s6y`}qWQ8q!R^hDvF%Yc`c7YpSIhAt)=GeH5ql}QOs2pJ6ZyGx33d1t z%gk?g*fcwTY$H#{GHP8+%O^Bp=Ru|s=MNFXZxxN-_RvTsm3KQUos1jwF>|Zx>ZydVEN&!Lawl zy_A11ND^B-UOAo?#l}i6QZ2F`dLV^DWo*|yJgpZHNiXW)SGWz*|Cl@J^a8&4V1Bzx zf`p(O{~<}d2SYdD^7$>#^u~i=?wczmAEf~uWG$}RO0-&jQr+iVnakqF>PY9OS>=(q zflPtYoB@wm(-Wd-GP?4d$!9I_=y8R2$T=_OB?AC2rEMbO72ZW%9ipjN zMK&}to(a}WDs13hE+`_5#XM6)(g5IgokW3yg~4=A(|W`-v7kd^OYzOkL-)+(zy)K! z7r>(_WNJH~VIOgf6Ssi+rTyja8!5QAjty$PQIkLRN(*IjGO=QfUVDjJ7U3EdKg%L?tEaSXt^TLz1|uX1*mbIR zKh&Bgxnkpk`U{!B1sqelNw|6Bq}^mYT)8=GtqPtd6D@VVQ}ryxvpTiTQcEXiaqos5oiC0crXiQz#M%oICQqwbW|UNx!)v@1pMB0CMq@BBLrY0% zfB8%OSgM{&ie05mkfj{dYW1;x2sFHuH}>lR;Mu@0N%+}tS)P4qzj9;?LW5_!S8#<5 z5xUKvF5F-xE(G%ajQhdO!2j9Ajk=kvPKfFd*(m(2dLFcZ@B#u297rD%8ZrepTsdS( z_81ZJb_jkqQ6yFkeflykK@HN?XM$5@00urIBX~*S9YeT77-G*BOY9$}+G03JgEA*m z(A4xend6O3be=I#0mlcdzJ-3-{%$@V9~LEi_zTxQ(_}Leu>ag4v7H&byrcq%Kl#EJ zbpsB1wrdE?9YUAwy;_l4YNrt*PfO?Dv$;4+3k;Ho__NCbqQ{8TE(TE_(j0zLWW^Ms z94^O4zbnm=Qj<*Ipr?W z`>5UX1W|a&$H5XLBQikkulC$sN18jH$^*Zs0cLYOxS`E#rI5a~!Y*UYV--AS$y@v36+OflE_LIvIEKWs;8 zg;nNo>j9vVcv6n;E)Ns1Y;53#$C1WO}I<}8kwyok+{FHjb`6bsc z8btXgzPM)b#c;t-=mj&rycT#7+I7H}wC@-6r-t0%1dlZ}_O}wZ6Vy^UGQRMzx?;?} zQT)6kda?|%@~PASD1{xk5k>4LO?t9ORGsY{8~cbu8sK4_Z07@1-d*5gMNaJPQG6zMn-B`SVVC*YH# z8-bU+aOcv@bl+HzFIwi1>3-dxN5$2c#WKwg4E{a $0T#xq9`xDZOK~5w5tYMJu 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 F{{?{=ih%$C literal 0 HcmV?d00001 diff --git a/VSCodeTips/assets/27809404-94afa762-604f-11e7-9d77-0d590bfccc19.png b/VSCodeTips/assets/27809404-94afa762-604f-11e7-9d77-0d590bfccc19.png new file mode 100644 index 0000000000000000000000000000000000000000..eab70baba46163345054d8b4a3aaa1e3e6c27af3 GIT binary patch literal 8994 zcma)hWk8f)&@Tu`2}mQ|4NFM6AdP@@*AmhV3+y7@CEbl6NS8EANC?v14WcyCAaPgG z|9kJJ_wI*hPtBZ}InSAA<~QLgO0rlOq!Cv&5!8T=0s ztR^dgP%%ut4R4!TYv{P@D83ec<7m%mV&-US&Iz@5g0DhA078Y~O?z`!6KbfvodZ}H zDnk2bg)qGRdl*1V{bz}*tq84-q6)R7ql-B;ALnyUE?Q9xYHDhrik@Nf-ctKp>nDUQS0BO8~c!kPv{22f)L_0bjuZ_Hb}DfpR#2=^mK;<0EAbe&b^8 zeGqiK(NTs|YRa?~VTZJ;-Sewf>)-9Ke6of-4C4Jp^^0Jd^;1^yxVe0mU63f_1j3O?f8iB^FW>@rs@KCz) zavt0o47JbLYi&V|URB7)X9`zbx*2kYTEd!#)tB4Y<~ zDgu5HHu4@LEMj)NrN)rL&xs-p0pIvH#cYC~VURZNyy+NUr`7ZMPgr&tzq!C^#Oi2_ ziPs9I*|ICfbhil+~Jxez^{R(TZZ z7Jpd(IZh4;O($f%8Ghh8tkmJqS?Z^WtTXo=@}QFOqv6*b2c7y)QgZaZ4GKJK$a;{x z0>9|dT7j(0{8@40jDDB?gIzk1$uq?W(JBM+S9iGo8Aaj|J4_QTBhvJ*a2=fk7k>@I z<=XZivG~M~axC6m;XA&J1o4iBY$U7JY1G02tkv^|VJ8Eue>6#c&k7zzw zW?Xc6P^pR#F_duG9|@I~hX-#UnWHNhlUTk^fRz=)e!li|p<+gr!;%cIpF#1o1@cHsTfKTrxB40X2M>e>5-d*G2`XYru!N8z!5G5rgks_(&o7D_(#iS5kkDnjH6Vm5s^qH0;*-4b; z@zs){*l3uTUFm$bu?Y$JZ`7qJZ(MfpB&|X!gu(0=MHb@bdC9*L)!Pa<{U5(@imhzbBgF1()Z!o$hoh_nXy?{lGb} zg@X7;r-qD-3<4WZSIvEV@YnV*zi=_$?%K5{{GHLKwFqeS4bLiW)SDgmsG{Y z#YE|vUSY`htDgh=`uY%truc0pUqx)Mb%ho%y#_gz>(#C9?{kP49VfFGD9*$ht3MN9 zBt?$ZVX{+<=!3?_#&nuo3Z(t>ot$>3%f~({Q$amEOis3jYOLv}34{xihPSrI3ltcu3!4n| z1PeaI#y)LqZk8XpUhjzvi;7AD0kW84bSq~R04e7Q@$pXk^L$Nj(>oVyxgzoZ-E~{^ zqP)C3`)g|R6KPEX?CD)MwZ@xUB=%{!6(EtoFHhJe;lw(do|Lqy0*C{h-J_f}Nxs4+ zIx>UN zwI}3LD4%}x`2!8fbUv2Pl6#eWe`!(dFhrp9`$&wK_O6%j zAY5{#*Q@pS!f_1eSX}`>KTqJ$z(U%$U3Ze&xz7g7xzNOYouO2V6weTGqR4nYop61h zftJlSQzf8Yh?V|mhThy>74BNS`BH<0&|3D2H-{o*(Tf9=)sVNo_*oV0$1TucQL_+M zTYir2zwFvALx$+KwzOkHf>{&SZm(4EF5Vb>d;C%5kfFc2^|Per`m#Z};%%ta^VsMt zoLi2r02#4IHt|5E8StNPoQ`A%O>hcp#nd+U#z(Bn?GX`%dG6idxT8rcu7lRAMlTMs znB^I42ZwswkoE>9j5@8p!Y{-=`@QmGQy{^}ObUrT@VH;@tD@FGg~>Uh7dGu&jWgDM z0h@2?xwH%Ty-?JZaT-`TCZ>ZaUS??7h*|FP%u>SbIxODd9-%1>gDvt2LU({_oQ81> z!@3kkCSMPg$pg~;+l~VhVC~!&4P6!81gBP0Bo*trQ$JCa)>~fIuiY|*$^%-Qm$=G) z{Xn_7$RH${Xh6c~pF>{FMoeq@t3k}+?a!;yuUuio0c5mCZ7idf zAb4EKb8%=;-W zx!+(Wu=ZU^AWVW|>$aXyK_H2Ik>#7_X~m*~0*ffGpV-e!}eG^m0^XF2! zeZle1-*HlAj94B1vgAiVu5w0UAIGTaSaVk2gbmx0ttjOI+VRPk9}Vr&mDAiLbEO>h zR6|LzS~l zq=(;Tm@RdFjgyPst`JmQ2?@8{nC3DwB&GzP5Y7dNt|VsVJrGSRcwos zHVQq|z)_qx((QIHTrqNP8bL}gRlaP+)dkI-b%%pfxPEp87g6AarN}Nb#jqfK)T2S1 zeannKv2_z5Kw$l1$N+Fz7ilM9D7P__wqOOWYBNhmykqvDR z9?hf1@$tULs`EvomiX$SFDknnjnEh*)!FL629;?DC_T#DZWKKM-gv%CdT%iwntH-9 zLe#g*$rJ~zizta~6p@W{YJ_IH%#4}UwwEFrXgs$pm$>EPwt5Pxt_#edGgTcMk*H-E z6Dx#dFy>ypRrqSmWqRU|UxRZK9O~)#TEuSNm%N>RFJ;b>J@S)l8ZepZTKS`ZpVV{q zKBM_ud<{rz)eDFwumYnp8C2Rp6@MW=(Y$s%4^F8xtso&Ey{)lcaefW0!rTdYOr!Y( z*snluj;>NEyT zAJ$)Va$}oF4kOctb>C12?^!!ZE|at-N=42xKNq%~B6`+ucy^!jIo(i}OA?w)$bhHL zV2IB@c#*Wx-}1hXS)x_AiEQtXPU6ny!v{l6rIcTH5Fh_19LkjQNRc2iCXqdyl(OI! zE9D9_NCtpfL2f7(3Ec<)v7WFZ@V+0R<`Ci4$8c*3z6FoNld0fz4u%q05pJui?IAe^ zrC%N%iL>7+e&6o|ztWVH6h-}t8y;Nm;IQr}5bK)wxA|IvKAaJcc1INNR6a+Yg)h@= z{2xbNg>a9c)#Wh3x@k*c_NLj|8Ca8HL8V55r*kP0QE2{g`1Q3+siPHfz-6qQu&d== z6WNq7&mdGXl>ICE&ATh1Mg1rK`a0DqT6RU3m5~{jM_S=O)r9H?Pg3g2@oD7(Gv*|W zzgI4SSjoa?(wAhpY84dT?XEm4rWMYeG9sQ6LKGl)3=D-(k(5+%S!hc6# z#!9)SGkw4d`{lwa2Jaml#Y9BJy$(^AVa47 zK5E!YTn+2O9Qo<$DQ$>8`o}~BaWiz$`Ao^ zV(@z;VSZU#To+C@RZ6{}O^&S|NB(b-PNniUC&ZYQ>;<2;wd0_Sgx(8F!N0n1M1mVW z0w?u{=aRqPQ%Qd9%rB@+j6-eL_R2}UKG+stdP?7)C$xe{kxnPazAg{Uuqn1`AzxtG zYP^*qu*ggOSXl4$CqPKWFREGD-~&vi?~{Fpf~C-$n{~du6&1l(#yMbY1ADZi;gdQE zUeSsg)C`-AdvQi%k1slzkLQ@aAClrey!iDi;agt*aRmqPGE!&CORh|i5`*|B0*d?> zpopusl78D@k+jkcITQkYlCBqJRy3=lgWRf0SWb*%}%lPx;A_f^qAjd^oXK-5S#Bx8j{;3+R7PQrT-MiYR*%{4iQtRSzm%i`9$ImgGH#OYec2SmzTG*^k(#(oKw83f6BIyJ1 zsM3K+Uu?6CQRL_KFEBZdSVsp`z&7@pr>Sn_PKIt;!SK*fsOB{UT@;n5kgkAV5Dulnw#%w&IX z9SyM#6Ky_i6-Uv1dSt7+t8ymOZ;SgD+*nm_TiyUa&dD8tdEtmo6%ryg-vT0QhS^^{ zLxl)FkRlxt^Dlv{Lh@(D<|KAvBpK50byB%$R*HrNDI!Y!K{k4&xx z&G9_&n0wde{fn00ox1Jjm@UJ%LpwfUsKyqF&g922kAa5Ra$FQzbPi(5O?w>i+_Rkk zTYffKZVi=oOrT^Z;!nvFfdmXp%mNZ}Q7@7f_x-kK`0g!Vy1I~-mq9AU4i)wS`rMvL zrB7I`kGS1-247XC4X8T;Tcx1!aF*3ewZFP=}D2Ke~g#%}|7b^;D)+=oyaIh)_ZoL4Xb0;{* zRK8sW-9k0T<1mniIV&9F3Gp~-)5IRQfL&9(KX(p1H{}TsXvL}H)TX>pTBcnA=UwMo zb+~Ra?MthgBwyYxxgQx`GoO+gZ7yCgE=uf%Q{AFq;8aK)O^+CB6vvHuvjX$pcJ>%D z_~6VUOeM#xWz{04Nw$SpN`0tR;IA|w5A^${EOAI?F_tWEM17Ke-{f`0Q(@2)ARhQQ z{G41?ODp-xx`_f$4L^ZVQEcN&l=w^ZCdU;YuZty!8c-=miOBmDE9`5n_5J5!^^f$G za8zzJ%`!V~P{487puf{m^a42=BH==l*9e z740KUbr~U3Q&P!tt&P1oaH@zWznYpF>jJ^>2y$k&*i(_tQ&&#qqo%Gl^8-4D9azO+wArtLL3`s_L-$q_8OtZs+0TX zR)P7}4H~p#91~i_i?I^&60(mhhv$L2_{u;|pfc4Q)1*LL+}Us3>k4rtSNwxhz2Rt) zDjoFgTUvH@g9BM<=`Jhg_&j5WfpK>$tD>i0>0f6Gs-C~e5p9i2PmkE1Sb4f07d=(# zi*zOwY|1h9?e5p1?Ctd#x7}=)pbI_j#upJ9;MbmYPz0+g`BV(>1|6SKUYQpNeB^s~ z^^ttfeyN#oazr@mJbA!=w#p>jg>Bw?rhQ0DpcCVqpVgm)Smo$|THU8g zJO(BwpWmELDA%mGAIzddAULt9i>dvkm{SW@&-zM0GL9E11{985n@u^GwZZ%Z;!Q;QuC5hXuKQkzw;6kygZxUgtbUbA_tD=)Kgwp&wE z^L~c#P{7t*fb#7R8Ww&HCf0l&xvVtWng-c8ozDiFJBSKvhBewy6Tl586Naz0RI+qx zTD;{3cAqslQ-gVV@UILiawPk9NHAF$(b{h7DD-mR#Qc`q>PF1AnSG8YVtjDgGl{F( zW~$O^zP9)XM%fK$FXPIhqoH*!=+Qb=Q*&{tIkj-pYdzwp>nY7fo1i2*=_xm7PI>$~ z6kGRVp;=m5Mx8lFs>?W6Rd!ngWcb4X?gG)@fAmlF$SX!lH&ww4F8n(2K|Dt$KW+lQ zU+CmQpJQe*xxl`8BriWdn7FOaHN8+N@mF>|*u~}bcdM?OySmy+EqzLGN>6&B;g@I% zxCygyFk^TeOc;?60zio+I#NVkv6`{xN+u*vbCIqlGJh97&+#2{2{Vei?csN|R zESB>0l8I5H0(-5j$mOqGjo%v;}IP{)gC;&95VQ zZ+fE(d7mFqi{}##zi=n;oGDB&4TR~DmRUVNpmnKImLicb57W+f#$TS0J1J{`8G;P0 zmeuLHQ=}4sV)D;t^tEUK$y>)P^VLpkv``Fy=jrSi(I;&UPIRW=V3xNM#V{8RLSrtH z9_nvZsWF5|Wn|-q5Wd#6FmHF+7#{++-RUHn>qufi|CPnB#BQy$jx6PlHrL0l017+~;~3&}v1K99c1ItA6H*(uA+w zRW6eiZ%*pwvQjW}vhLZ1x#sMnoK`On(s>)x`Hqa=POMamqo7w($f}K-ZX@FKiS1Mb zvzw~gxExC@3d&U{k|>8!TwGkI=VW+~vs}Tk_7*~L5X+6iNmOEg>A=qorqzvIy6-Y_ zXr5;~3?hd${g_x-_$KB8O@4=EI=K+X7EeX{3cIG~FGZbJ5uT-&7a1s=2|2C$y(1Z2 z2c!eqDZ&q|(?K+Vl(rr1cAwh?RV>Z~^hI1`hmrgB45p9jslE?q(GlVD#g^K$y?JFm`rcyE^@qSnFpV}FfG|$uhg6FJ z?}+~MZ`nRi9NLwGK|#7K@Gv;dw~LPn>kgGjGQ~%Zk`35Mieh=sYSQI+Py3_NJUzO} zGLv~CnMGZQjKGEQv#T2ic5*Be(D%-Z2F<3r)Y-H5t#Nj$rtsW>un6 zHjt+CL`+Z5rue96P$m53W>Y+~sxGhPAOWVI#6TJ5*}{C?Za2{Fg~!S%erYN`eoUe+ z>ClS$i{2RDM@C*hn=;i4gpB2rI3Tyzg3lOoeMvc~hZ)-_xTG>avrC@J0Wkn|I7krrj;CpYYd8Bt{B$=BevTGq=B@m(V5 z+($;cBzO*DNv~p0q%HL3yHkd}te+OjL?_qvFdM^LYFPsV^1I7h$O2(!@}F|F*3(s$ zPlU08m~c1nC*RS>g%6a!s`-t5{9R$ZR`&=GF3LkbWXuMy?bOqLb^kL9AJY+sms~Jj zWd=VaKdFA@XjMn^5%dfHQJ}z!A8gdlME_XU({^;)vc=nl{-Yp7F4;sRJuO>SNEzQm z+E40zHJ(quJri9aVv{Mqq^3kyU-&*~5Mq`0BO_+gR>mX$X zc*Sh-?Sp=eziaUd(y5UEdpK@=m^izTL~@DqAgJIoxE_FNjc)BVc}gy(e+C(rhga$q zj0piL_0|fS3C?d92=Jerw31YXgmJ+C0i=$ej{pDw literal 0 HcmV?d00001 diff --git a/VSCodeTips/assets/27809813-64ae6c98-6053-11e7-8b6c-2bec3400ccd3.PNG b/VSCodeTips/assets/27809813-64ae6c98-6053-11e7-8b6c-2bec3400ccd3.PNG new file mode 100644 index 0000000000000000000000000000000000000000..a5d9324dd5f8126b7003c58a014467e0487b341e GIT binary patch literal 2558 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 M5t9`y7uNOtf5XcLx&QzG literal 0 HcmV?d00001 diff --git a/VSCodeTips/assets/27833921-189a16f4-60d5-11e7-87ee-996cf97921ac.png b/VSCodeTips/assets/27833921-189a16f4-60d5-11e7-87ee-996cf97921ac.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c6cb770d51231f471a957a98e2605c87d460c9 GIT binary patch literal 52602 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 z z2rx$0)U7HnfT+%wE2_Ct;$5^dZr7K+gxrbg-aGbY1K(|xTtET zs=h$Cq*-!?&Z`oYchKK4Syp2{uT&69SPv=~Cylq549+#@&k;o252H2pr<)LTPve!Ld+ zWB{ov1BN*flO4@#1oCE4H?3dSCkZkX0)A$ul%3l8i`m+@lWq_JmkCb{5X{D#gBHg8 zCXG#)4V*uhGQSle2>YDJi=Se+oA%+pE<8M8>_Yxy&;R=ORg!|b{*jIi@H$xilg#tE zkrpl3|2T;M@FfKGNqX{|s&!~CsQ%}22Ds)zQ+Np4|1|aj3w#Ej18GNr|G^N}$bn7B zv1R_tLRn7!WE;xkxr;9PG>51a;Tx8T8_dj^ak@saHxw$H6@AVBFr=i*qt4}N_&IuV zxECIFSdb?h+`XXEtX-7`<0d*SXtZE|@P#j6*yv`(fz1wgwu@1y6mT*r}@%{hwFf7N;~YH4T3Cbtg(16Xz9GSEu~_`2NUwQ-TNADoqC?onsweZ-ssO^0@t`9)A|wL^$sMtJwb5he9ekAuSUkx za0}Oi%f1kN=-eajB6wvr&Ni5GWox?%d||-794vhQ=wFNWTBkO^-*n4>ge;>cKYKh< zTVC@3_ugoS(P=C}KtdXBsWmn`7;c>Y=7)WQVWV((8bKL#Fev*hW+)^yKY({FdqzoaOGn3%T$$LEq-K4G zH=(x$VjVfP-7c3x&5hx_NHDuJ(*CVf2+w;iZSYsC+@r!N04*K2Y+4n}&}=SDw*}YA zB2xb=no@Nul2ic4>B#g-oMr5As{GJpj!uO6&yS|fA#}v4nhK`Dyz_R)-^w_YjDUz5 zsYr+Myd%1Zs|Vn?#tl~iv_*X+RtVL?UReumMHJbi;j1E3Zd9h<2aM=%PYT}N%zDy~nRnV1I$Y4*9nZ9G ziOJ40nO=_5QA#z)_9Lg#wU-&OHP5RC;>U%~|{pYdUT zybU8(~&S_=YqRW{e*~-$F!J4A0uodOpv- zlAvEu zx^nT?S#LShIZMM=OFyokIy|UgAu2xW(>S}@glSFdX2CHawo%ezYI4=C<6~SQFb&eV z*Y85*qvsMpeh&zs5_8M%L*Q(^n+RCkrw=G?2@NG70S}$=m%+Qt|p(v6@Io-fsQaYTuQJ{W)CC zG#Dwl%@Wz3rD(i(0GK9#{r>Vk^WoD)Brc?!G+Wnt4a}-*Q<~4CJ&^PwPjc1R7?2nX z730$l5~?C?h==YUj)>Wki5girVKQKfncKt#Vfh_qq`ES7ZT_RK-Zh{#9LI)$JiIK{ z?o~xQV5R(E*>>dPG7OpIy$}_H)?kK%6)7DGy!=P9q_<(>Jq9gZ4}YgzCO?uP0sgzgOVtue-?Ma&x8X* zgVOd5L5>EyLE%r6b6eYq3IeUQhZL$mwj&#@;oW;AE<266LYh8_4Z2?CU6P=@VKPyD z%tD^MPA|_;Lm5E8u%i#|Ci;1UH3rhq#vly`s@NDPq>Oz=brS*WEKy}}>-b%_)A+2e zgz}s(9S{qCQM5N3R$AGA4b~lo&aJ9Hln3^T%c+z{ z1R=HTGnqj&D*4+6_I}Q-WZ2MQfjlM{iw0?-SgIyPx-2ZnuHmn>ES>OUanxM#LZ~r; zS8raIoGHrYN8ZwMI|uURnCQC9&;Sui)N$U&A!24LX5SCWWD0==6}*pNS14oP8J`FOtWhdTIm$1+XCR9WxXu@d*J0K&Aa(-HPYlaDIxl7pIeo{u;m}IS`SbYxJNPhg@Kx{i`7mp zP-_dR_NUIXD%Hjp$XH2(1bt)8{PuKs!&?L3RniOD+|D5t)o$3lcK96~9VU^sK7sq3 z8R_Y3;MU^ekX;`;Ui5km*l<`srOSyHgw}HhI&r{)0KoL< zyZ_k`N+L_3_9!#W;PD0xj=Bpo^dUQ838g7F+`E-!7$uRa+tu~q42epDccm4#+Hc*T zV;#RUli5-noiyBkNo73$0k**jG%9%1t7G+z7uDws#1i z8m6TfA`3I%%!Uj#4N0jWj_%H(bPVjq9i#z-!QI{64Yz5(J3{Ci8$CbBe8~O&soWHWlb*H?+TYq(*IR!z(Zzhg}9;18CT@*Y=NuF`$gwVY@B zjGw&^sf7Fv2e)SJUizXVGgf|HtJzA-&p)LY&G5X!*zSY#a$nHd799{98_QNI+kKlR ziQ3grR74@(`V{y71YhM~7S6rU`YmjCq#nEG*!-u{zM=S+V>SXs)qqORc)Jz|VznrN z(2P}8bEG?NO>T42&~|oqnspvhiGzL9*?b~+%x9EX;BExWZG_(cTaFF_lrl#C!S6!2 zl~Rli7a<`bVf*-)q*9wM<+QG;Nu1d>(CgU=B!y8ImWql>1gBQ6Ds6v8H$c5$_UjBD zU>oeu?k4z%3=~firR{m*`QL7HTx0hsSRxSp3eh;tI zZg$DY#Ynytt)&e6v*`QVkW%BYE9nlZh)pC5wo(m;3#yYR0-O-;M}y@kogubX0`s%=;zz&6-O#3&K#$J$%#$W zW8S&_tKd~wSYJaem{-S-E|f&(uM3|_v*H{RS$u2s9~&)sfI@&=3gY#VEgp7QDOPx# zeMep5EyZ23xx;3H)ULcy$2-)PH`xCc*gL}Y|NZ{Dr@m&S)9q#K3Bcv}eP_H(drDS> zezE5`yc;YiE+Fa`7h80jN<3YL&5|*#lZfIW@AYYV5^lLs4Q{d)Y-A)gnicj?a)Z;4 z5cct4&%tvqrER&;xRUL&Nw0_|dPy(UrB8?s+xlA=A)=jjEx11fRqd&TFkMkQO$6bW z6ncGFA~AmX91kRC`yYFEWL(}PjTyL~3JJVqP_K5jmUegtCp!!DnuR+3X-`;`)&qgC;sVlTQp`?)-*vU)e4mwBKTmcL0*!Fene3Q%Q=DYp&en;73Eh%^rg0W$M+UvdSN{Mu|Rk=_VS{b)t$6Mjv_ zO6{-9BWyHbc{6ydqIBO+^2+J06nUqvA{1*KtZC3NIMuG+`{snL-r0cv9glyYdlW!> zqIKVAl=*s8y^^L$-Kz1WNH!Fl5S=Q(eDR$ z(Rs`+R>H3s&EVXpFU;7N-SsICxeCL0Or6m>!K~4@rr`4-IVUGZHa>@%iCyWT(?hJ| zhhw%%e#Xr{;jzs*aW}Gl`=+wa3;BI>7>w!*sW&d(ZB__I0|gLTzJ~%=T*bj2$0y~3 zrS<|nZN?^p99Rk@ZRMhavdMDQX~+9NYR@})cXYBtG$=P?a@tL7O`8KLu@V&E!S}mC zL*~l`6iZbboL9VC+S`rc7&h;Jzg|koc&x6i>@JBl_x1Jdp5X1^{+-dBC?M|cNMZNg z8XL8s3SWMM6Z)Mwibh4W?7&z^b!5qO1>FLbdlvM>bv$Vk;BX&1F)lz97}CMDQB(1j z{ld?w&_Ljl2gC|DvDo3$lPtWO4bkdOZCG9}w)zlZsWXMQt*s%bh>-AKeZdfaB=vDn zgQ5}aU;apZZ8G$7iBMITizj&cddswei@Ot#EVO!o-mSUI?hU`@`49GvzDJ2ZuF?1mB)ldU4WYJ{?6!Etr;)2`0q1e3K z6W_?l#A|EE8t(Ydm}TX$_(oK75EcD?HJZ|Se$ij)M#wP}toi3#cC5>&?A zJt_MMA|qD$y@@{!mEv_jWQ!5Jl6TkbBkKN?b6ZxNH6NH1XCXHP8ne4eUnre{|> z{WW!UePKIf2KM#}GM=L!;q7_cRRMo?JBNO>lJZpjoe0}OKT?6Ua5O5TjTT3sM;Fj1 zTz9islE(v~U!iM^z4_NArF5pe=rDz5Xmy4u-+GG^MGtR58?I5?NAAjUrmp;gQoig< zqNP76F5B1lNoFOngdGNtTFX54eUHh6f`PIYC*T?cEZ0wo(A|XSrXr99u953;PyMW# z{bsYGD@p|FfyDblc;TRkqw7KgvFELpUvb!GSby0zq2fCkWwfAyDdXpvZw^H6Cz>p% zbED}}B=j>-7A;Yc&sN79{F)akyG;sLI}gsv8;q9B`^s-yNQyjmw8CIe!Ua{qI>KWC znYR*g_BcUbO@#Pf_sq`dSmZ1FA#fu_p5R+66NU)B{Mh0M#ZEHpAHUqK$p^9&^01pM zm~9AD6&IlT$CbnT`cG@!_E4zlhmBua6c^M+T^}D^3WrYPar_WxVOqoZYxOVS-+w+2 z0?rn)Y+s&qMLK@x^3%XwmwvBN`au%e0t};WO69JLRTdP04G?W7Bq;YcwdVJ~2z31V z^|qGF%S5~k6o2Z8R_Iw6P<`=w8BeL4JNexGyAAB|rx(-P+Z%$Pw!Js3oJ5JkV_=4` z|3pE%iI8H0t*LXxtN-3z%R@W>la40Gb$4 zbI|AeCg>CqirLf*bbCqV7sPLH$0q}kF9-CtdHEXGCr|V=u|!(@O1>~KyZ3ynvOb%m zV;QOBFnaMM9=TBOjQu~)S#}qY(Fv6_?}sUf6+V^F(J9&+LEz2G%lnfktO(lkFp4B7 zeISG{s4Mzu6Vo**eM>w-x^4!WLzE6s-*;7Jm;c292OlT)q14KRh!S|*kwRbnRk@M3 z`Am2K?3U$yCzUzNs7~H~cwKnJotQ221HF0crZls@b`&vbpI&x*47_dgef#EMyrjH5 zw7WYe&vhpO867+5(-m^JT3`LfZV6! zxg!~g7|QaCBSC9reVl}_yPJH|7FbqOA*tVazQP8-Ot8cGt--%4>!^DgXDWe7Z~acF zk&RSf9q@#Q&D{eG4DCxgj$P3-zIy)^5;GxpRTpbgFc4DK*Ss&84eIHc= z*|#H!)Dvk;^If;$TEg0%|B>C3qvuIz?FK`l8@rI^B0?!pYD2lJUGGf`tVd!k+;4kU zt{N9rc(cIUnjVfqLcSXrFPgHq{p~k8kZXlVI=i756v;EIgV#(@&HqlF{XV{hqM{5{ zz0dANq4nUa=QfJng3NPYY^Ms66rUrwm&b z6e;7kIAd#>$Los=YxTG*-RjNSfD=WwoD%9)j90sP_~FZ>rG#Yr@*TXG*E>s%dOC@r zL=n7a9uUUA8mdlPakVhWjuAjB!THqkmDos=*_4d)le4+Ulc$teodR5~Wk|_Ev*A@7 z&C@(zymB_Vly|zY#|vPswQq9+?2+HS+2reF!KE}!7=J75Y=&(O{W#1wX>*}QC+5)0 zLJW_C6rn=#Nb+l%)N=`S{j$zp^gzow?V2h9=H_4|g4Y;)`shwcT`2dH_A8ntC>1Iq z@Of!m;}pIaM?13-fhHByp*l70?%A?4xs;!~^v5JUhHuJWUe=4C-JAoG-*klD^Q>pR zaaerFCi&$c;d>XtjadxmG=r?P7C8F*e`o-w_9oJa)PmhQB`+ufHuEQ7+2c9u`gwDC z8$hk{Pk2F#sI@+k z6>lSYJ3Ma8>1tfMXh2qjLQ@6iob~+xwJbtbO!F27)5vLj%elZ)%$xb(sW&I8F^yDR zm|DwyAVF4+oP6>LayPo&dr?c|X!MdIO7~N*fb^~cekAjI7Zpoq-lq?pR^02>&{_dg zQc48;$k&5s)dW{owVUsig)l0ES1{NShg;aRSd>bco@gy(?*CDFH#hLW5}J~R8m)EtXD&D_Pv&~{T>EUv3dC* zDwhMdcl0htL`-O*pl2IIfjuR?9#7Hi%GvorolmDBfpu!%MeBIDRWMgzp}1D(!JAoc zz>@kFP=t1N?pU>|GSrhJ9idqN(*js|9Bfl(SPL17Mr;@~A;t7hc`b{N<#}Jkxioa`V=LXM|{|3FuHUUt)i-c5FI2>TA+`7-z~0iA9f0~{B3a( z1JgyXUlx&z#x}OL6r7BWYaYUi)ANYX(7DYH;!6|R_I1V#nk{kn3#g4n&m%r$4EHVIyKc9tz@D*N_4ZZ_{jQqH94wU^Kvj((7cXhXHJ zxV>`SojKLVX{&6hpH>cJBm}Ram7O>h9RygmJB1l6Ilto7@3|EBOvteztN^li zZ8rdC^OaQwNzq8a5aN*#=;np*OrXy}*?$4WJ8974!-u_^QG=GXwcMjOlC#w(FuDBQ z=CIBiBgY?hnxOPn_A4^uVE<&<`&*0U?r#X$ez!)q79Qd z^7?QkQ4Zv$HYc#_+cWV!e;uHC*-N`wu%RUBB=L6g7OmF(-ZzlE+p z0^`5uUdvHlz=!IQ6E}FMScOK!)UM}%tW=K#<{rYP0uwXHo=euDOE4M#Q0i`u^sg4y z^|zTTdH;B#{y*iuiP>Iu@o(_{bzSonM9KKbbV-#|bfbag!h2R*iN?mpzsn<`%-A1# zZoeuxa8cHV0(Pwabg?|J!`c%m|Lo(yPavSd!NJG^q}1rJ6Qtv|X5x@mRvwNYggv&Z z6x!y|23I6#NB7_!`I^<;q8mbg?j}g)FBAwVRHQ7mv_7QCe_{tJbBN%N^S<}zyDgHQ zl(jDB%9bC0I~tyd1Kz3;ca@u4wg3v6{`aY8N0Xx7c`oJgC;qLZIj~BHWZ>`az(JZ8 z9>CSA68~(9GhpEO1OycNYiVh478Vvq{+KOeIZZyHem>6vU0hyp=^&nRB>CaJwq>9}i5*@EYv~OnTh*m-n&Qy_vR^jD;R2Xv+N)lxeCJFE)Yfs0YvY8+v>+hhVwXgsI zo}u$S3B!?rR%nNcK822gmFTZoUsXBLfzQObaIoL|uX(zoa`_p+O}U!~>tF$cntbBl zHjzBx88rUa=qrI{*Qs9EO7Ktn|1#zX$$+LkJmWO@&(xS%h6V=*ziVW4_5)hW49XEo z4ggK16@UiNPzv(goZ`H9b!{_y{`-3W2b;JM`P*SM`ZmPu?vEy-;BbRv6B1rMJfwK0 z$H$YLtN0$x2%W7rBbAnxZgPTF{Z9(Pb}`iq!v&P^MAz*D?pxh6)|cxiG;DUKLUN1K z(^C@PFMNC~c4wMj-WTRqZpJZbs;U1|_~()D0S2$+<>i@K)m%G}56|ww(PQ+|zOcjc zBbq64LC#&1w`64KH2XfP`klRp7~c%k)&zpWKIRhQ{-6l~5)Y)nHmgQ1*X|A@Hn-t7 zCAZ5M8tcucdvo-)Ab5GbO10bFFMFTi4jp!c;epk6i_Y=i-`-F#d7zzt{R{v`(bIU{ z5h-P{V+Fd~aMzn`&xdv#)c$m$KVD)_z}MRy`~Q!wcMQ+0S;9sqnam`a*tTuk$;7s8 z+t$RkCbn(cHYc|EJ(>62dw=I#=UmtNlTNQ^byruTs_wdb@51$Ui4K#^>2?6~RFau| z(l)%xL>P>|9!$8J-$mZbj7fd zrnf|~^f$Dyh{!G=Zs+@0R$d;+pW~xMagml04GVKs3*htwgq`Q1An9b$*j3|}P>buNfjHh>NqVX$2$W+x-8yo#01I)zS zj0oCn%GszqDDq@l?|WD-P7kO{&)%aiw(&yFyF(5NdIYL^IcLL4$->}rpj#TUtbn`- zCWacUMQX%Eg`~F{<0u@LX!dBXl8VWlU&F8WBJQWTH~`IaQi~hiLGEozOp32+tr1#_ zwUH6=(=7M%QeM-aO!v#dKkuaTvT|x8$m(B-xc}-gBax1j6)1k6M$?yiHL6f`9Bu97 zlxhrqc{$G;30-RI?$X@FYnc#pGvMANhS23;84e;A75ru-8L7c*BOMS#S0F3!qw8RD4^i! z(W}=PSyBqh;8Jy-k|ONT*3N<8w7o{SgYDX@*Y(D(=>Sw&Z3Jg)+TUcH1KZ0YNxkyF z@@jzZ;zi0Y!g{bMGTlJnHX`MIvEKl{S05l4WCNYuiD;+uyde8hKh6CxF9qBYhDXCA zZO8Ta(D@D}{@hEU#0mxlkubBizIGI4wd=Jk62;g-{<0HJb9ta{{qspsGgs>08y==& zd5we%7JI!uGY}*d(3O=P9mAac1EwJrDkNt_ze5ipqn_?pHwLn|xG=gq zmAKWFm}SE%q;cY=vDA*nGy9s5F>NfirXDTV66h4{)t};B zN>1(>ZUe#KenB2qBt~VlXI=}GE**p{^D=?cFr%-!s->|Z%tPmkL)Izr|F&`#wMMbD z%-+4$2iX9v)RIi$tr5l*Rd*XMN>wbR=w%mYtG2w-(=&%z;e>9X_JI{EUWZC+*fOU~ z3cB^QIqt7-NuBQ*YI1zyQ|zqw^aZ};hdJl%A-#*5f(}VO7MWSL2=I^8@6U!|s~?Y_ zaDL3yTc-DRTOPy>|Es<@@%)K~MI5rPAIJ6}kTCukM^At&hKRwJ0pOb5eMK4puur#P z*^3_5dB-0s1qFrdmKL=Vxz6+?R=7A!N-8QMaer2n9%em-fW0u>V~>O71pL&0iFZ)p zqCqTlfdDx!w3exyK*R@nkmwGhMCgY5z1*VN%vOLT%qYx;?RNXsU&6A%5F+>8ZZe1i zEE)p`lB+QkDHi*bC~*wK((~WG*8faLccUn9Q^hm?NMe<+f@FB*B9%vbf7wA#mzg6N zcPGru*be)`U@y_(O-)&6xOCa*jVrACqd!pq^r34jnUAp~h&=dSm!V=iq zbAPZ1ObDSEbUr0w(YGgY3vM`y{6Lx1@}J;=Hz1JCB)w{U^kL)a+vb}7WjpL3ZZJM9 z@pDNO4~2R9yB_WSyoEyLRYemi4C=>k9OfG_eWkE9{8Pt)XPyt6B3|`ORSgX>l#M+P zP7?sIHyQ#$9C44*9Nw#W|6X-H&U;4E%Q4o&w+Dd#$X82HXDzuJfF3!3B$Dpbz^cX2+c;ylj@9zmH-cEYz6&JlL1o1aCtSb8~bf` za`yWWD>b-U49nbRpoe5>bncaKeBR@8W3RPV%w}?!gMVkK$ISUfCyyP=`-W9y1>r(o znZiAdlN>n9SA-%_1NEO)%=M%rbCT(^1=%65Mqf>dU~wVPN6b$6Jp`xnhbO+ zmOy0Ah-tQ?3q1u+p>m-f+FcDo@n+BFDwPSSi%@^(a5}ZX=Zy#~uUg~2KGc7F%)${9 z_uzWm^8cez8WtoyJwsMxl)%Vf zM5)^T&xGDwMz^b)lUg4x|N_l1%>D$jJFq19aDWj`43Hz232}< za^NjfOJGN%K#d>|dx6*C$_7@fz;iDfS<<1FC%lbKfrWAE0K?LaK1?3t-=~_v%8O?g z{7@OBxkw0OV>*T+UQI-1=xHRU62sO?lKKqtyh6QHE$Nk|Q;I+13PO)&uwcWU7h? z509g4py{{-&U85jr_}BktNP)GnxcZm_qY~`%Eqro#MfuJejTn*Sft*GkrMLf-;)dP zH%Twq>CMd;0ueFuIjIzSAvIlM5|Xs5H4qR)sSX>2xIPK2?OhI7ZmWfeyoyKxB||RC zj0~A1TaXi}15wkT+SW_5XyQ@4AZe?*&s;G0(Zn+S=S$F%TIAGmu=i=K7`j$cmzPle zukP6W*VSLqPuhE?ldI$4=!`gt1A;a2{>+mY<8V`eKMapv1h7b!q}e^_HBBwWM&blB zvmh7W?RjI=gXlshCRgbd#}gY=F+Xs|mK<-hTsS9lE#cf-y}>naHM-nJreK}Khr$$$ zX9j`C<C^$H{MZRU&Q4rTG zGIrlpnJOxa2XSTrj^m8g>rpSx-qnmj_3yPGAfPIGqsE&Us7;`^NhA`>-?z3|-pTv_ zh*K!=ZChnwRMoDpm);B&6v z4!T7iobXaMjN1-GP z``!STM*w++C8VIJI6GaI{+IWDiVRpu>9&7C+%F=6YFw;}myF84=;Ot;yak!}WG}4q zVv&B0(ozdbK2QWv>th$*MCvUdY4MC!0qJh&LpMj8O^NG;xNO+0bbOq@LM!yxetHB5 z5FRd~q7bmM4drfl@Je0n8JrCF2%n9nUW5JRFM8uBEXJRD>ZO}5Jb2&1T}3jT9w*G* zG(NM!&eW>U6xr#5G4@lhiqQ^DPc7uU;iui}9sZ|o*op*ZBUOO(81ho?*Beh_hw$+8 zPjR8D=7sk#D)%AKhgq)r0|nf67aqRiX% z@u_moJ}~n8vg__*Ee9qrFiC&av36|BBiC8V9czMTTo)sa+8-IOKx3j>s6;7&tq3)4 z{9sYD5(cUM;it89>}e5L<$1XsY_h7cY^q7=cDlZ)ZYO4QB*H*X7Sa-t^d%1e>C+(k zPqTd*fK$lCSUvZY%UriDO&Nf8Aw%ml-#Xr=2V_0g#DIC)s`zKv9=tBiNyP2$PlU2( z6IV{tF&}57n00gff0tVe4F=d(e|d2#GX~R=qIGdz)<6e>Z#i9C0q;~8VZ%m$hFeF+y9>l z_SX~y5dF#LDk-#CZ*q&ZNrn6hSPJ38d4F5(G=&m!g|n$<_XB&TatJhBaA~Hgmi=4{ zDi>P4y-jz&$zP8mIokh6RR8`gfYr}bmV#Mism8E$Zi0a#i>{6&@kXt|0&Tw%2g|+)6 z*TYsgO-J+!60)i-rH4hJxSt9V-zjDRjGJ!hrkwLhB2`swt%#ywfO3 zU=Qo^l@zEcOK8g7RL%ZGO}@#(Hw;7^FG?f6S3lpG-yNC3H|zNa)zrv|O@+D0qNtnR z1w8)aWnc#~H#cV$ds%PHoT&DU^XZv}h$|HC{vZ0>KCXi;*~!iFf(0{b&^@3wk)pX3!HvqE0IHq#}z85>klmWF~vZyzR+_zfKDb z?<%^;3>Vx1@g!eM7_oIpu4c{L4}O5j80g>5rBtr=4bOr=SZFJQ>4FiiP|xwJZXi+` z6RAm-Y4uF^5}p2K*98tO*vfpVvbf{A!klZ>Un5frUZw6*NljxznVjf7(d(o4VQ6IJ z*nld%ody2#{|9{jki%q<=8ILcg-7{gZY%DATY!3xD-$1uW>CVKLIsl}Fi1Ud2l>M8 zH)i{k9$Sr(V!ijz9qZxi{7czAg7-diRBmrFBR8gn)kzY_7zANIC$IuX0jjDKLA{r| zI~y~?2zTNL4x@)@YXuP0B1%cbdrcz}+mHUjFba%Ln!I z-Z2_*0USNu0>M>|qcpJUn_&@X0QZk+bEOR=HYOlly*FP>H@6J7wTGXgkM3XGgGm~% zV4sQD6m}GMWHJPufvZ|TAfX-4`<}iQU4f;AC$SJkgF}8c@=m3aL|ui5wl?Sxj{|Oc z89bz)(l6;uK`n~2!~FSZb3FklEN2&ad0C-SK6wGhWHT9|;#72eV+HH`_sQz(uJ4@p z_ZXL!P45a!=*I$@OqL+ic5BZsyyyACE1eSMrY4SKn9J;+7|`6Gct3Y{^sWvGqQv|h z#}21aS)9tw4=k69s%S&RbbDx$G@;e5w?D5~O6Ii(uAru#iso3X)*t-64+DeA8KQ2Y zDscoAa4}y50w@E%lVMKHWK0R#krCKV#>~Y?ZFc6M1YfybQd0ex$@0?|KWZOQX?yiyR>hzaiL9qwx zU}=iA76{=RbPV8hT;oZsn;zc*z3~H#z_CFpFY^C9S1U*yfuRvdee895%hbrVmYUF!e;p$ZK3~v4 z1H_fRX=ng>k6rVtwSUdwf-tWiGUh3MbrSLbYna6;O{*H_+SWHe0o;ROx5`o;{ktF} z-}JuR<6nUKZ+-ZTO`M^=KErTY*X19l>`%n6iCp4-3!tin&fAxU?qgX@KML*=hRBNp zmmm3T6q2_zoGRubdoO8OV^Pb+jS+6@r6bGzNGq`h7AuW7 zu0LQXRoPJ}u-g%)E8ifLoTRE~>wWW6PFF1q4M{RqXPSFvpc@j&Rc@X8sy{4w$ESvq z8Er6$TdZO=gfRy`5-Wy9i|lu+bQf(|gQW*-Cf|iMY5gTtAv;zzLyp7?^qF4hl!oX(Ld4umAo5eBSo}04FFPG!SW6-Jf;3g@5RcbT#5MW*(k3Q^$it1>9Bt? zlCVgkGcp3RvvDQTS>dXytCQ*U3lx?BuI)#5ErdU(5g=x}PP$ZYL%J9n9F66sEL6bT zMgS9MhZ}I1z4%>c*~$_lWcNkO!woD2T>omAr^9!p8xd(Rc(9q{#dRDaEI zcg*)!nsk=mhtTL@a7pPu7)HMvATcGHXO@;7!ZIB4X(3N@Biq>KWtn z6#Zo>I+FdqRI6n;PX-z?Fm6iuUwAvTWQK3cmQ0h3+Rhb1i;LSg>B^&dgKvm-4APC6M7-kP!pgb+I8cRGx0W{?$xp|%fi&*uofrtXPg{w~3q2!2Wi@6Idwua?=0L(9{RLqV#$>7hCpPFQ`zz4E1>Hf?jV z9S6;Kmq^?o&QF;g@8lZ7TnT@P&p+d$EsTc7DXFsw-H}PJCn2Ud0#yQgUz!3Rvpeo$ z#5ySt+Z_SoZI5M)jqu$UC_pB&D4%&}gB5a_Dd$Rqo1D5Z)LRR?=1%c~W{p!GWfFz! zj{N}ImQQsJugv4*hI+wn7dftSBZ7k)8|`oM)g%D?r>J}VTg=A6CVCClXgoD=W(Gcf z%54+V$^-bl!$46H1)mQOg7PiIaNE$24#K#1eHw_n?)x#9w+l$zT3K{ltkm)tt=$1@ z(Hgl8EWIb9cK9tkaEQx~A)s5g# z7~-+ykPx~!I>xEu_Vf(#Stb19s-OWz;93!=UY#0`@Oomx9P?dB>zepysTK@~uO>T* zgkIpi`}nb4eNNp9@D~DCtET?NzhX$O3PDlgLaS#WqBgj+Tc`yJ)};pRSIMTYev2{W z!m=5))h$>Kim!9BEz7yzXqaP@0c7Tx;3J1e6~St;WMc{f;D27a%s5qFRt^S`sNe#@ zhx$?*u#LAFB&$}^EWdfp zRN0gT;!M3z_Da!!%^AFv(p!BU;jDfuqK+6L?^+8>=K;Ne{Bf4bDIFb>MA_&TLy=|v zdwhyyo5W0k~x(pRGg^;`%PX68k`-*R0UwsT&ir`=rM5ibA$ zqU#Gb(m1wPS1KxI+^(8Zj)?p{GdqE+s1AGCof)+Vhw80cUumids>f=dz{0}%#K*^* zubht09L)18vbJ=uPNbJTJdx(_7yj}Ou7n{UmNe`ksMIYG_@1eG=e)e{Lk~_-W+(|{ zmzEGSng+-~{fv(9?IB@|FiMLT)^THvS#Iy1hs3T?#?K!LneB#v@F+Us&D^ke!Uesz z%q1Sc>$_6z45YT&7_ft?=WhCCsX{HRGox7d%@A@!OM+G9H-JNP11_=zgkrRS`xp7f z?zPa@7`T8eZLw!orxMvrZ^_dW57AHc16%sahyeIe6D*mU+v}7dZa0Qf z?S2>5b8XjHepkkpb6?ya$yYz1jera$p(0cIi$G6w`HhNPZ|Spb@}H0(%XeS9^e}Gl z*~5000UN6s*}oX`o{cs!kh?0Y!;a3EzaOQFRBhz%8SftGv18Y9(&I14c?1>K{Gt*71KW? z?(6fhX1?ptVNF7!s53uobd}=VZkYFS0l)=-h(0Vl{Ab(`0971#u3X5gsO8$}-E-XYyf|xzCdnGUExOMVN0$L9^#Q>t%Q1 z=_bZl(MNmI@P0)Wpi}>WFt8x_R>`cKI~-7wBF?<0$sBWk`>LCfK~MC9t(ood;`xKW zyrQS)2?Ce05!31mFuJS0^a?MM+D!Edu{xnf@YS7+H=|tpT~R(9|B9TFvjwAILdwYD zDLeM@vvLYi1Jb#MOpys>e^Qn0`r?v=`jwf5Cfx^&v~K*uZ+j%oi?tR@?|rK&r7nl; zX~t!mN4JM6p_f;b>TmFoe?1Ty?!e8iu1jsM2=w#}S6g3Un2&f#!L{HTEZ2!W)l^h| z?kwhKLD-2M+8yqKD71j0t#*M#{&G7+ zW>rlQy>y2 zGBm#c?Ce6&_1N~f^J1$$qLA)nI_avli1rD3DqiQo_(Jcj5?oHd_rl``1xkc(Q*MF- zm#$^dqcuX<< zg3E`8bAJ+BI8V}?vsf(5GT&=R51Yv>86%f2*oVZDWlb`(V^3eI`u2-dn<&7#0KnFR zDf{omBPKWKc{(~d32SEav=WOXIl|-1$W>TX@XvS|k0mj;8ZVWSf4RZQXKHxXo2$P!%lYPV6j^`Jozif z)$}HJ_Xb4sWw?e%9DQw8NAQX{_28CVi|*ggJ)CNWt4A70Ji%jg^u zo;E~ACW^mR|BU)2Qg&&3U32}Uvd}57@iFJgm@2GRTTSj=asQ%G!cgrwi%oc-*xkK> zxq%HmmH1od=J{i5x6&!QZ{e#m*9R)1R)q~7pE{a7yz%w1*i`Dy)VaM+IY|(tBfqc* zJc|-V(D8PU z@p{10coO$i8--Bxa!14ZR_X;?YHJtwp3I%lyEV5N)^{#;>V6A;)b_d{RwchEnqtPn z85q|O)8!}#i;2lpRFS*b`vWO{8>osT{P2k-OR#rDatb*^c;*FVo5zsxIx1733&A_O ztU*M};~UZsjQ9l?{KKOonU&HhD{lu)@qcrLjSbKp8{T@ka60|D@WW{(tY0vrhH0=@ zXb9yn;IC!`qVUXyxlrjmU>RG2**l~8x^fhLf*uEm`*WjarOD_&eQa)|bcv{HTE3>F z5E>9+fYpGA62rm+1F8D^;!q z3)$U2Mw^^ZOx9T3F@uI4L}jb@o*sITzKPTWr&LdiVsgO3br@HluH(>pT+2YBVuzi= zC~r-dQ8eo58=~Bh=&LOS+F{OwXa#TB}I8edK*-& z(z5e#NOTUdF9b+)ry!S=YYyS0nnzU{UqpGMq@im?Cmk)fbDj!)iTvrCs?G4u$kDH+2`1t!^@ObtQeb>&4`nvc0c6v+ZBL3DW!|b@6j)yqPMG3 zQ5lUvLx7rm*_Z>d>=~`K;e3X?ZO`he|LA~g21VG?$E4sV#Uh%3yM%{JPpQJu6j>w8 zC4&g`eC`zinJS*A!IRQ5Y$RNNzSSE$yoib~$Jt(v>M$2WxLYi)XC2lsc+A+jA@_3{ z6pz}upxY5R=L9W%cQ3VpwIxMmG z0;0`W2~WfJQl)TREdA&??La9qZB|zy`3#N0sHBoidpx*9S17PEz zkpT2{1mUB}r)fTEeczZu9q%mKz%azH@$~8ixF-ed*pv;l z*zE3!yUhI_XTz*3bZ=o@hT2arcDA?%F%nWhWvh9FESiWlyzV@HzY;F+Ho`h&*+Ql7 z@CY1}*EbbkF&do`{yJVnYPWk3-EKgr&*ba1-Ie6p&OxRL?c&I)!KnW8qYmgPNSN2T z3?|cUyFktFTtf`a0Z6yW(?r`q`v&)!EZk~WzU#e-FkXD9*;$1E{0|Gl^S9A;QCDviFBTp-cC!9+s?d;|^YB~@Kii03Oh;MM zP4~(O=xDr-4I!^RVdT>#9jNo;IL}89I`?0mjAJQDEy5XXN9Iv!IzbDxh{IMIzKk$` zs%aNC7-==T{xjs^-8GNB7=ZFq=E@{5R|%hjL*1Su1d|2&Vck8;=_9;eduX*UwV(99 z%g4S*yvyAuWGPl6eVo4Y`@<<2@Qy`ETLg3WD4RMs0K&1L|AfKJLp&J3KSx4^U=_?xmAny6ygawZfm6B>gPwBdTg| z_&Ew%ij9hL{BtB0kXFiZ#Zvo&Z&gM)j~-emzE!Hu+qJ5(vg^*S^@`533++wM_ux&o z(-etj@N{F8<`6XK+9?`oBjesI39Z~cn~M*9I98~>o0QL`&F9PdL$fJc3RbRc)|NHH zBoS|liKTQYTmW2c%H6X25`76zftD@RI}uI-w1t}0egC*>1kp*viVBXGTXd6d(G^;B zmL|fe+IYDXy`j$fy-R>pL>IzEyJnoF94rOnm9`djH~>`^Ov^#jseGUS)%;vi-TTy* zYRjn9z;)y3%LkN*R%gs}w&Elk^Ay#t$)UST$O{ZD*0rw5zq=%A=je!(B}QW@A5>D} z_FlOZxeEyiDHtYbd^og6>e&!hObuogBOnuVOEi+!s_IY4Z;!DElWzuneX(jy3r3|wGUdk(ke0mei_tj6vk=J6B=UuxbXn`e_th> z$^n^SeuME|oy*bGvdgF!o#VdSo2^OCabgWoV@OJ9U2X6RPtNk{!NK-C{WGehTvkHA z{e+TPIuA+nIjR2pWRroY5t=1rJI2aj@Fb-ZX@7&T{;4`2xk42j`hQjP0a4@67RqfP z!csjE4M8`D52r@>+>!tL)Ftu;hphk@fI#~DnJAps*EHy?H(nPeeDB2m_bo+`*XM`8 zKTl%~5U%rn(;&AnT~9YhL*rJi>1)Ui<}8XUf^#Kbh605GSFBjVeuXz-BO;-UHkb#( ze`$tvt)YmljYF`rx3|6C6QgL;Sw5D{4H<2)s9RFYxeWN**sdI~!w8n_RVH25mwCDP zqr#D=FMH)$E3Zwp%u?g7ub!7!OW&496MIZYF1F5+!pjsX)VYqQ?GN;$j~ElZtG~j< zRR}bBlPy$6Rv=X_c#k;f37UI}YZMbbO9ul=CYc^$+GN+7w?Fa@%*X%6d537b-m|c5ta}Z} zc)ZIcVwxvRJdbFU3_22|T<~xPQ{Hrd@R%sn89zu)rROwHi`M!%)$wx9qcerEHPbKT zV1_g@N?w;?yW#qR#oEf6S5pIQcz1dU$J@O~77QAy=CTvdAeKP=%e&HH+eVY zoh@VatGEgy<+80I@ZsB3Aql7&uY0& zGi52sb9tyQJTD6?+PpTb!XjEg#>@Gm4kPu$xeesZKVZ0#gP&ly1BwBxkuwHW4W=Q< zVXM|{S}U!X<_&+giBoR&3-9IT7TnY<5et>hL@GeetWjQ(g@pQ19A)i~2p3lLi;Gp- zjU2}%Gh_bhD=sA?;-VIZP=^2n6Z$j6hE6e+!=K5t;2+D#%9a_WaTn^u9Qe4%TnTgc zCB&{LWesKZg9=193ik5u+ls}OCKU6o6d;yNzxn&6wJR*G)s^s1e`}78x*G<*t!8(p2he`I5t#tc>+iLc0Dxqr2h%Q+}kgV}cTElv8kw1PGlLdHFCi;k zzCGF|bO*;{*S7qc8rX(m z)$X%&yFpwsZ`#NHDT*cEA-pjtk<7-ntB0r?OlWjg9!qC~09^R%>CQOG{JBJK#S%ov z#eKR%idfW8NQeMyvSE!hFi~)<&4B?redItM`3)((6t+;c$^qpt3#ZK5qsEq<8;p}@ z4N^WeH&~W;D-i~_?$@dQJkaO6#qF-=de&G6;QViBGJ4LZ@pz=-5#8r7EVzSnNWI=K z#`#3soF^BkJjR%}DOZo%n;0@XXAm$~WK^7O0_Ms%tibDnyv{iEU4i&PwZ}C`PSnZJ-0_wv$>EEA{sY7BpTlC zddC8z^op9$=cK;7xH(sE&<|hq`Od|Oa>nC7ghe|%g22Z`so%Kj5z9QR)_xsAg_K%B zX>1J^0lgid{&xfIaspSdaK)}xr`&aic3)7P*e6An-^8{mVo&q2?DQ5K6~*pE@b`Qh z3%rH9M8Gp8XA3-Jvp0X0&)>M5*QL#n?1|i@ni^>lmh$t?4p+f(1WRT?Zt2kv>3G2& z$J*-a6T5_>7T$naR#Q!i@y{{X4|S|0ct1;6X=hlG#xX?gzby?=98eh zpwr}z_m*2;rPA{r%ZYh2tOCGSwtwAh{wNsW7QYjR^iggYTK;q07iQ0XG1@kk#yp79 z^LdVLj+-X&`z=mzlcLBV?uyOpG5-mAnNUfp?;+rr$TT?adK-!L@OamB{)ly zbYUBnvypaSNKBxY^P8q4LKsgU}G0#Rz*?+h&{~ zZ3dK!@1R?WBHG=HrOJ5LHmF8g&P30@u)=e!E6aCT%;CgF>bC{C22{koY6pxj`33h_ zeaWE0qAa$XG554}QZAV9%xqI=vo8gK8$2-ln^;{J?rzu1xUqiQglCGFFDr-=2GpM{ zd~%k+C#l_Nt5yem(Z~Nh_ll6nsG4e3Ysz{$IABL|d-o0j;iLPew>dxsa+_ej3Y8(J zOU+h5<&8gyc&(^HBphkf=M=Tgd2G5OKZCetUmI|eyI_5b3^>||*r5i2H*5P%hN+~^7T&Yldk#D&gvX7Uy)o|i@ z8rp=@_zj9y1bL|)$@H4-48w;f@}};2o4M8hnLK$Sw+axGFAeR=4kP=}p1sm++MRAZ zF3n#*S*77EJ4#r(eN9uzBshmgtb?j)Va<~lEDwu^g#*xqEDJBj#!oISSgukgamE6U z2|m4WwCE8l54lqKIH>-=hLTV>hslPEN=o=QJ3Q-Ax4!!Wy|1_6Eum6YQcDj5uj2>r z?ujBeVVK-M+=93M2+G7pecXe>cL}q(&3IshtmyqJbTc&afphY#K_Rw}#;Gw@RU>+Q z#?z(zlep{^gZu$XKx^OPw)tKw{pVQ}w)6YX+P2J}^fa9Qvkv32>gg_J&}O50Gy+?= zE?RfE74et)q@#Vyo?c*&JXeKCo6^09c$d+1hTbTk7i=3vW1J>PqmJlpmqB=6l%-O9 z-k*OOe0!?bnj1NJN8x@%Xxnwx%}PV@pvel5Z8v~ZpBAf~v~=9ef7;>9USt{%%x;PN zsMZy@;$N8@VygdknH3mbuC((?U(4Vh+?2o@s#ZXZaEK^-a=H^>t3TMiIylHK zgH#ffyAbA2@@ZfS^9G)!(s>3UV+l)g(bLO8Y$74m!>cYYCo?;eb8^OyLxZ6)ioTpK zRb#o|pUakD_<`_=mHm+PBafo^_3Mpi^4#BG>)cp_> zi=!1h)@f}$6`$T{KSU$a#HXSnWz{N z_|$`>UhY~}6GC}sf?N>U{C&~AK0rJ~2E z*c(eDS&)+Fd2kS}1i*^avU@~gFu~?xyV0w(xyB^BsWV5wKzBCLTHm%NN%v?neRBA= zu#3v{hT@{{=D6RcK!us&lz-C`@Xpn*-1Mb&r%#SbK;MiVNK;3Kw>Co+g{vJ*irhlj zab#qqXC#5bX4SIOg7LSq-VTt*-Mq5nh*C)Y{qmp8ddB54eOXxqEpx_FA>>c@77zoF z^Fu1qP~;dPEiEh=d`1pIT;A<6uDmJ;a`ge%BhKb8YwUN}PjkQJCY&9;wEH<$7nM#N zS?frK@~%t_1>pT#c3UiGj}~&kKA-9xVVengwAE&=qih*-irBhsC_kB za^`Y4F6kIl0Fxf*-F6G%fP$yJ8L8(;Ue^uP2_yhFxBd-{>}tW%_0G2u_c)NeuENtQX`idulrBN{z1y!7;&002ym4H}a2^kexLX(xG8p)CjL!0!!mba5M z@1{L)ix}n7YdoQ30P;l{T&`q>$Nolr&10#PU1swac`ptip_D?|12Wx8gPi4~!+lBk zx)LJ!0T$AUqVupU|r>FDnUHfmgQd(Gepb@l``C z@Gwaj_5Eq~qM@iXulsk^28;uIQI?OGQ_auSM$lz-^G^86PKVhGCG55Ew^q$zbF09*}o z#8VazU-wx`8|oA*zC{ozN}VAV92c?H!8=rUlb4+Kb2mdF8-4%xojL^HD};eO+&^F7 z;cr%pL7ByY38%0@)IRM*r`hVM z7@ccN+i7^LJ$Yo>H<0H;?{J-7r(_ZsoM1N+)Q<{-OUIFyr)-1bSzkQOXx@y6&;Sxy z0`jezl3D)YoO&0L`0mG|Zsrb%k6>CXRRNiEYv-XM%_X*ccl|m5NVVT-wC+n)2~{b% z8BA7vTj}`PAPSHNHOOPc61B=Q>8H>bqj=qfzkgm+hd?5|_2>CW)S8>HmRLPb$d*kEPj?<_L0jR1?uBJc}UeZw^&EA*$1ngn!( zZ1=*^QS#phZw3c^1w|(tKV5)DeeRNgymshmo@2FmeRl7wkVL>)U8oys0Vv~{q)%=` zJ9w?<-}k=*AuaRfhaKnTo4L5K5=$hL>M;YUH(J)N9aLw4p@QDVRB7!mT|N@H-0OV* zX31e|R7*IO2y*B(mB_e^{3*RUKc8unzHHyG^rlb zhgl5xOaRb1&!!s1znw$&&CSK9RBida!Jfu!?e|Pu&jVCgnmHhCy;*Wbs^sRt0qv9n{m(;%$1A%EZ&oJozal~%d4TR% z{;wu7Fc}$HqCEDeRh%sgj94FmulIL}_;)n|QYYb+H9wIK*(LbDicR7Hjm`^E`Ri@8 z@b@V!M0xe_wA81?VhqF3enSieg|DA{{&R7jt+fmV9^I8M>Vwx#-CsCB7YCR|M81GL zUJW)cP5_bVr{`>MZ_nfg@&{xe6w6rMgz6b_gXt_WA(mLpM(tu8O@~U5R{qW9Dx3b7 zBe_bpCY4s}y2Zwv<@Vu04j%ryWBGV^^3 zx|}Fm18Qz?eZ767ApYA!7@Ts~YAXf5KyP$H!V#)pgBE%lz(K?d>BOL#eu}b@##tTEr27XrXHASOfm~3kO?G5PI5y1VXp#}nA+^7dqR=_#I@N{!)aat{2F;mw@ z+xR<_A_TnR<#}AT6G;F87=fck2sgDho5I2V;uGHc^M`;R1^-yK}}?8Fo?$Q*Dr+N`lkuY-`VFn@nuM3@>l z$|5xw3{Husg7NV?49}|%fIX1;Xf+XIIyhorJmzg%Z`6Np2`~pO{Jsd4OLBgP_5(C$ z8oX#qLp+hX7^Sztay6STA{eRTl;;$yo)8qTBXrlovUy(7rwYT~5XBFyz&i~Ul z&K?GsA0jbEJfCv02}N*u>229@?AC;!zEZV)1Qg!$`<#Q`UlX#yeEx=sF|fd3)Zk;c zz)CX;^WTFL6<~BMN1LkuE_STQK$>5)Ja71J7sIItdA><&Iua-yjbera83VRiommi* z;`*b(-fqC4v%-H)t~Eg7m&;>L@b<-p_Qf1PReo*qyt@BFp{P zPPaix>vSG`D}!|t(9w~xjG`jZPGek0hvS-V`B^5r`sYxJ183ZpFD1(BsQ;DT5yH^$ zFkg*@z{#G%hg|Sgjp*q3IF`0o^Dr^-$&Ocw0bGAN7v#_bM_FE( zbH>DUT?bj~z%rJD!!_UhW@1$F5dt=FFM0R(f+k=k6$)pp&F+ z)!Mt-{P5ky+3nxXp95E}iomMH%%$x+xJ(u12nh?z+8Y)kf3@|~@=*D$6LM-&mXyhf zNOXLBtYlr&a_%zwqS=o9Q*{3yQLe8SEj(^)Rm1aU0w@{10wsdlkcxhAnrZ~rcrCkU z&sK}-1!vLj`ME}RaT^a=NtKtEbN(*XFMD^V(YE?~)cf))o}qOccWO`n<=j_##o`7( zsBDPwX;}0vNofx_qWu&W9C_9A(s)7mY-x`!k?u8JO#+bK-!;LN)lnraeqD72^^X*G zoXD7zynl0FC#cJ)lE4kBJRWKm@Bn#y{tH&D-~eXQ%qh-=g@uz(ncfO0=04Gv6kVpi zVE^WhypPLme`Inwuy1=7lu`*yPh~2=>Zq^arU|&D;$^%U_-5zxc@FWHEnRZ&csXX9 z^G_32Wc&@Rw6g8bPcjCl!7|ki$%l89<<9Q~RvZ%?vN=9H4a|PAQ4eGU6gBt?ELeI? zO^%rzT>NhHPXOk#ocakeilC7Np$n{RtXJ-){1G}F7!p#|**oJfunD{)gk#6<@|_`V zrwYLX5YEC2em6SX*ZIu@g){`cX$BTZwKneOfCUmvOlB5PY*4E^@SoZ3?!HBfQ)kLC O0D-5gpUXO@geCwmH%M>* literal 0 HcmV?d00001 diff --git a/VSCodeTips/assets/27857540-5db15d4a-6172-11e7-953f-347c592b4e4f.png b/VSCodeTips/assets/27857540-5db15d4a-6172-11e7-953f-347c592b4e4f.png new file mode 100644 index 0000000000000000000000000000000000000000..01747d7c92781430551a07fc293b7f6d0164cd50 GIT binary patch literal 1555 zcmeAS@N?(olHy`uVBq!ia0vp^CO~Y&!3HFS6@PqVU|_7tbaoE#baqwWn z(3qH#xKo}p z+_XB$>ZYG%T2$%|Z`a+HYU5MP;jp z`$1#1jnVXMj zw#+zX!^T#Z&DNItoJ*)%=pkSFpJPrP@pIC0SQ0;57#eK2_xu0<%~H(Fzg5`U_6z_2 z|9|g`|Nr-QH-2M&{KkQgL8UzNK~J_2KQJCG?W zUP)qwZeFo6#1NP{E~&-IMVSR9nfZANAafIw@=Hr>m6Sjh!2!gbsTG+BoAQdG-U511 zA0(r1sAr%LHyfzc1|(_~kXezM6XBAXo0?Y)w8PHS$Ofz&LjqwTlEz3RjRwdXktCoR zZS+CTNAeCNtiYncz_R1A(T4}T9apMA*#ZUzrq!M>rQDPxV@Q!Fl@W)^pD{@0VA7%{kXkJzwjq4@-uHOwdLN-%mw5mz+&=Za(-RI8vd3 z*=_Me5eb<|Y%KZAJz>|B_QzZ{xm5bsds9G)wVC5~o#2b_dQD8{&%VT?+Gsrc?1?Qt z@ki&@x!=vZ9D=wn_up0ReRqDc zUj*a9A1_O^J}r$Y3*8-hu1sd*JRdbB^9f)2e(SA0$i;DHLBN;awFiA>T+~oGzkgn) z-Td}WkNxSaEZPTnW>o$8D3N*P^n3A*{aPI|kEGr-Jdy}oeRaj$vt@US<8PgP%E!d5*8mn{ZU} z9LQr|s`m0Hrbw{$9#0Nrm|z??gYitM;{%3cTprg;F1@#}lIe_F8Pf9cI%@;-foj>C zVy)k=8LY|Yn^1B>@#4fQ*K@sRG%L36Ik@!aOq-O+TkJG`bpAWo{rj?r)TI^GYMc^( zn$^!vIPMn1e86GW<7Y)4j9$hu7A4wk7JFta<2xEK>)z7~Yb73iNSb9O;+$DE-FbUb i$KmeGS34}*{xQve|13s#qu(7+8RF^c=d#Wzp$Py`QiziP literal 0 HcmV?d00001 diff --git a/Week0/README.md b/Week0/README.md index 3c6606ebd..8d1878b3d 100644 --- a/Week0/README.md +++ b/Week0/README.md @@ -13,6 +13,7 @@ In week one we will discuss the following topics: ## How to get started 1. Download and install the latest Current version of NodeJS - from https://nodejs.org/en/download/current/ To test that it was installed and running properly, go to your terminal and run the command: node -v You should get the node version printed on your terminal, for example, v8.8.0 +2. Although you are free to make you own choice of text/code editor to use during class and homework, we have good experiences with Microsoft's free VSCode editor, which is supported on Windows, Mac and Linux. Please refer to our [VSCode Tips](../VSCodeTips/VSCodeTips.md) for more information. ### Here are resources that we like you to read as a preparation for the coming lecture: From e15b715e4c0273eb7ddcbd2044f6594f8a7d4786 Mon Sep 17 00:00:00 2001 From: Jim Cramer Date: Wed, 8 Nov 2017 20:43:37 +0100 Subject: [PATCH 041/304] fixed some number references --- Week2/MAKEME.md | 136 ++++++++++++++++++++++++------------------------ 1 file changed, 69 insertions(+), 67 deletions(-) diff --git a/Week2/MAKEME.md b/Week2/MAKEME.md index 2c1134ce0..455b3d64e 100644 --- a/Week2/MAKEME.md +++ b/Week2/MAKEME.md @@ -48,13 +48,14 @@ In each assignment write at least two `console.log` statements to verify if your 4. Create a function named `vehicleType` that receives a color, and a code, 1 for car, 2 for motorbike. And prints "a blue motorbike" for example when called as `vehicleType("blue", 2)` 5. Can you write the following without the `if` statement, but with just as a single line with `console.log(...);`? -```js -if (3 == 3) { - console.log("true") -} else { - console.log("false") -} -``` + + ```js + if (3 === 3) { + console.log("true") + } else { + console.log("false") + } + ``` 6. Create a function called `vehicle`, like before, but takes another parameter called age, so that `vehicle("blue", 1, 5)` prints "a blue used car" @@ -62,93 +63,70 @@ if (3 == 3) { 8. How do you get the third element from that list? -9. Change the function `vehicle` to use the list of question 4. So that `vehicle("green", 3, 1)` prints "a green new caravan". +9. Change the function `vehicle` to use the list of question 7. So that `vehicle("green", 3, 1)` prints "a green new caravan". 10. Use the list of vehicles to write an advertisement. So that it prints something like: `"Amazing Joe's Garage, we service cars, motorbikes, caravans and bikes."`. (Hint: use a `for` loop.) -11. What if you add one more vehicle to the list, can you have that added to the advertisement without changing the code for question 7? +11. What if you add one more vehicle to the list, can you have that added to the advertisement without changing the code for question 10? -12. Create an empty object +12. Create an empty object. 13. Create an object that contains the teachers that you have had so far for the different modules. 14. Add a property to the object you just created that contains the languages that they have taught you. - -15. We saw that we can pass functions as arguments to other functions. Your task is to write a function that takes another function as an argument and runs it. - -```js - function foo(func) { - // What to do here? - } - - function bar() { - console.log('Hello, I am bar!'); - } - - foo(bar); -``` + + foo(bar); + ``` 16. Write some code to test two arrays for equality using `==` and `===`. Test the following: -```js - let x = [1,2,3]; - let y = [1,2,3]; - let z = y; -``` + ```js + let x = [1,2,3]; + let y = [1,2,3]; + let z = y; + ``` -What do you think will happen with `x == y`, `x === y` and `z == y` and `z == x`? Prove it! - -> Don't cheat! Seriously - try it first. - + What do you think will happen with `x == y`, `x === y` and `z == y` and `z == x`? Prove it! + + > Don't cheat! Seriously - try it first. + -Check out this [Fiddle](http://jsfiddle.net/jimschubert/85M4z/). You need to open your browser’s Developer Tools to see the console output. Press the Run button in the upper right corner to run the code. + Check out this [Fiddle](http://jsfiddle.net/jimschubert/85M4z/). You need to open your browser’s Developer Tools to see the console output. Press the Run button in the upper right corner to run the code. -More insights from this [Stack Overflow question](http://stackoverflow.com/questions/22395357/how-to-compare-two-arrays-are-equal-using-javascript). + More insights from this [Stack Overflow question](http://stackoverflow.com/questions/22395357/how-to-compare-two-arrays-are-equal-using-javascript). 17. Take a look at the following code: -```js - let o1 = { foo: 'bar' }; - let o2 = { foo: 'bar' }; - let o3 = o2; + ```js + let o1 = { foo: 'bar' }; + let o2 = { foo: 'bar' }; + let o3 = o2; -``` + ``` -Show that changing `o2` changes `o3` (or not) and changing ~~`o2` changes `o3`~~ `o1` changes `o3`(or not). - -Does the order that you assign (`o3 = o2` or `o2 = o3`) matter? {Jim Cramer: ???} + Show that changing `o2` changes `o3` (or not) and changing `o1` changes `o3`(or not). + + Does the order that you assign (`o3 = o2` or `o2 = o3`) matter? 18. What does the following code return? (And why?) -```js -let bar = 42; -typeof typeof bar; -``` + + ```js + let bar = 42; + typeof typeof bar; + ``` > ‘Coerce' means to try to change - so coercing `var x = '6'` to number means trying to change the type to number temporarily. @@ -176,3 +154,27 @@ How to hand in your homework: :star: Additional resources and review: [here](https://github.com/HackYourFuture/JavaScript/tree/master/Week2/REVIEW.md) (work in progress):star: + From 54cdd24009ba14026fa8cdab72647efd761e2d50 Mon Sep 17 00:00:00 2001 From: Jim Cramer Date: Fri, 10 Nov 2017 15:06:57 +0100 Subject: [PATCH 042/304] corrected bullet list formatting, added semicolons --- Week3/REVIEW.md | 137 ++++++++++++++++++++++-------------------------- 1 file changed, 64 insertions(+), 73 deletions(-) diff --git a/Week3/REVIEW.md b/Week3/REVIEW.md index f47595fc2..43f40c245 100644 --- a/Week3/REVIEW.md +++ b/Week3/REVIEW.md @@ -2,75 +2,75 @@ ``` This review covers: -• More CLI -• Scope, closures and 'this' -• Array Manipulations -• Basic DOM manipulations -• Code commenting +- More CLI +- Scope, closures and 'this' +- Array Manipulations +- Basic DOM manipulations +- Code commenting ``` ## More CLI Check out the CLI review here: https://github.com/HackYourFuture/CommandLine/blob/master/Lecture-2.md ## Scope, closures and 'this' -Scope, closure and 'this' are about *context*. +Scope, closure and 'this' are about *context*. This post explains things really well: [Recommended read by Todd Motto on Scope](https://toddmotto.com/everything-you-wanted-to-know-about-javascript-scope/) In this review we won't go over how JavaScript implements scope. We would just be rewriting the above post by Todd Motto. -Instead, let's focus on a couple of important **words** that are used in explaining scope. Understanding the JavaScript side of things can be difficult if we don't fully understand these words. +Instead, let's focus on a couple of important **words** that are used in explaining scope. Understanding the JavaScript side of things can be difficult if we don't fully understand these words. ### How to think about context? -Consider the following sentences: +Consider the following sentences: > Eyad is a great cook. *He* loves to make ravioli. -> Gijs is a great cook. *He* loves to make ravioli. +> Gijs is a great cook. *He* loves to make ravioli. In both cases, the second sentence is the exact same. However, the word *he* refers to a completely different person. He is defined by the context. A second example: > *He* loves to make ravioli. -Now, when this sentence is written down without *he* being defined in the context, the sentence doesn't make any sense. +Now, when this sentence is written down without *he* being defined in the context, the sentence doesn't make any sense. ### Context in programming: -A JavaScript example: +A JavaScript example: ```js function myFunction() { - const a = 'ravioli' - console.log(a) + const a = 'ravioli'; + console.log(a); } ``` ```js function myFunction() { - console.log(a) + console.log(a); } ``` -In both cases, `console.log(a)` is the exact same. However, the context defines the value of a and whether it is defined at all. +In both cases, `console.log(a)` is the exact same. However, the context defines the value of a and whether it is defined at all. -### The Scope of the Context +### The Scope of the Context Let's first look at a definition of `scope` > (1) the extent of the area or subject matter that something deals with or to which it is relevant. > (2) the opportunity or possibility to do or deal with something. So in words more applicable to our situation scope means: -> code that is within the reach of our code. +> code that is within the reach of our code. Consider two completely different JavaScript files ```js // aFile.js -const a = 10 +const a = 10; ``` ```js // anotherFile.js -console.log(a) +console.log(a); ``` -When we run these files separately, the `console.log(a)` statement in anotherFile.js of course cannot reach `var a = 10`. Why? It is beyond the scope of our context. When we run a file in JavaScript, the program creates a new top-level context we call the global scope. +When we run these files separately, the `console.log(a)` statement in anotherFile.js of course cannot reach `const a = 10`. Why? It is beyond the scope of our context. When we run a file in JavaScript, the program creates a new top-level context we call the global scope. From now on, we'll call 'scoped context' simply 'scope'. @@ -82,8 +82,8 @@ At school one learns that *he* will refer to the last masculine subject introduc There are *five different ways* we can create a new context in JavaScript: - The global context (as we already saw) -- The simple function context -- The object construction context +- The simple function context +- The object construction context - The object method context - The event listener context @@ -91,11 +91,11 @@ More info on this [in this great post](https://zellwk.com/blog/this/) ## Array Manipulation [MDN on Arrays](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) -As we know by now, arrays are collections of values. +As we know by now, arrays are collections of values. -As we will see, there are often many ways to achieve the same thing when working arrays. Over time, you will add different techniques to your mental toolbox to achieve the result you want quickly. +As we will see, there are often many ways to achieve the same thing when working arrays. Over time, you will add different techniques to your mental toolbox to achieve the result you want quickly. -The basics. +The basics. - How do we create an array? - How do we add items to an array? @@ -106,98 +106,98 @@ The basics. ### How do we create an array? -An array can be created multiple ways +An array can be created multiple ways -From scratch: +From scratch: ```js -const a = [] // result: [] -const b = ['item1', 'item2'] // result: ['item1', 'item2'] -const c = new Array() // result: [] -const d = new Array('item 1', 'item2') // result: ['item1', 'item2'] -const e = new Array(20) // result: [ <20 empty items> ] -const f = new Array(20, 21) // result: [20, 21] +const a = []; // result: [] +const b = ['item1', 'item2']; // result: ['item1', 'item2'] +const c = new Array(); // result: [] +const d = new Array('item 1', 'item2'); // result: ['item1', 'item2'] +const e = new Array(20); // result: [ <20 empty items> ] +const f = new Array(20, 21); // result: [20, 21] // Note that `e` and `f` are a beautiful example of how weird and unexpected JavaScript can be. You will probably use `a` most often. ``` From value (as an example, many ways to create an array from another value): ```js -const a = 'hello world' // result: 'hello world' -const b = a.split(' ') // result: ['hello', 'world' ] +const a = 'hello world'; // result: 'hello world' +const b = a.split(' '); // result: ['hello', 'world' ] ``` ### Array length Every array has as a 'static' property `length`. Meaning that we can easily get the amount of items in an array. ```js -const f = ['hi','there'] -console.log(f.length) // 2 +const f = ['hi','there']; +console.log(f.length); // 2 ``` ### Array index We can access array elements through the position of the element in the array. This is called an index. Indices (plural of index) are 0-based, meaning that the first item's index is 0, the second element is 1. ```js -const x = ['first', 'second', 'third'] -console.log(x[0]) // 'first' +const x = ['first', 'second', 'third']; +console.log(x[0]); // 'first' -x[3] = 'fourth' +x[3] = 'fourth'; ``` -Note that arrays can have empty values. This should be avoided usually to prevent unexpected behaviour. +Note that arrays can have empty values. This should be avoided usually to prevent unexpected behaviour. ```js -x[10] = 'eleventh' -console.log(x) // [ 'first', 'second', 'third', 'fourth', <6 empty items>, 'eleventh' ] +x[10] = 'eleventh'; +console.log(x); // [ 'first', 'second', 'third', 'fourth', <6 empty items>, 'eleventh' ] ``` Next to the index, we have a wide range of tools to manipulate arrays. ### Array methods -These methods are essential. +These methods are essential. **Extremely important is to remember to always ask these two questions**: -• What is the return value of this method? -• What does this method do to the original array it is used on? +- What is the return value of this method? +- What does this method do to the original array it is used on? **Adding items** -• [`.push()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push) Add item to end of array -• [`.unshift()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift) Add item to beginning of array +- [`.push()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push) Add item to end of array +- [`.unshift()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift) Add item to beginning of array **Removing items** -• [`.shift()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push) Remove first element from array -• [`.pop()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop) Remove last element from array -• [`.splice()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice) Remove a specific element from array using index +- [`.shift()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push) Remove first element from array +- [`.pop()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop) Remove last element from array +- [`.splice()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice) Remove a specific element from array using index **Useful iterators over arrays** -• [`.map()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) creates a new array with the results of calling a provided function on every element in the calling array. -• [`.filter()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) creates a new array with all elements that pass the test implemented by the provided function. -• [`.sort()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) sorts the elements of an array in place and returns the array +- [`.map()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) creates a new array with the results of calling a provided function on every element in the calling array. +- [`.filter()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) creates a new array with all elements that pass the test implemented by the provided function. +- [`.sort()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) sorts the elements of an array in place and returns the array ## Basic DOM manipulations -Using JavaScript we can access and manipulate the Document Object Model (DOM). We access the DOM through a global object called `document`. +Using JavaScript we can access and manipulate the Document Object Model (DOM). We access the DOM through a global object called `document`. -HTML +HTML ```html -

+
``` A common method to access the DOM is by giving a HTML element an ID, and then using the `document` method `getElementById()` ```js -const x = document.getElementById('hello') +const x = document.getElementById('hello'); ``` Now we have stored a *reference* of how that HTML element is accessed through the DOM object. We can use this to manipulate the element. ```js -x.innerHTML = 'hello' +x.innerHTML = 'hello'; ``` We can also create elements ```js -const a = document.createElement('li') -x.appendChild(a) +const a = document.createElement('li'); +x.appendChild(a); ``` @@ -223,7 +223,7 @@ Coding **well** in JavaScript: [JSDoc](http://usejsdoc.org/) [W3Schools](https://www.w3schools.com/html/html_comments.asp) Comments ```html - @@ -244,15 +244,6 @@ lines ``` ### When to comment? -Now for the hard part: when to comment? When you work for different companies, you will see different styles. Embrace something you like, and then learn to let go. Google on "when to comment code?" and you'll find a big bunch of different opinions. - -The general concept is, however, that it is there to help make the code more easy to understand. Note, however, that comments can also make code more difficult to understand when not applied properly. - - - - - - - - +Now for the hard part: when to comment? When you work for different companies, you will see different styles. Embrace something you like, and then learn to let go. Google on "when to comment code?" and you'll find a big bunch of different opinions. +The general concept is, however, that it is there to help make the code more easy to understand. Note, however, that comments can also make code more difficult to understand when not applied properly. From 6c1e8d52f4e9bf4ac1ef84a1c056d164e83065ac Mon Sep 17 00:00:00 2001 From: Maartje Kruijt Date: Fri, 10 Nov 2017 15:46:23 +0100 Subject: [PATCH 043/304] renamed file so the contents will show right away --- VSCodeTips/{VSCodeTips.md => README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename VSCodeTips/{VSCodeTips.md => README.md} (100%) diff --git a/VSCodeTips/VSCodeTips.md b/VSCodeTips/README.md similarity index 100% rename from VSCodeTips/VSCodeTips.md rename to VSCodeTips/README.md From 735a7b25cfba3b2bebffcfc33adc169f3b8a81ff Mon Sep 17 00:00:00 2001 From: Maartje Kruijt Date: Fri, 10 Nov 2017 15:47:04 +0100 Subject: [PATCH 044/304] changes link to vscode tips --- Week0/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Week0/README.md b/Week0/README.md index 8d1878b3d..dfef98351 100644 --- a/Week0/README.md +++ b/Week0/README.md @@ -13,7 +13,7 @@ In week one we will discuss the following topics: ## How to get started 1. Download and install the latest Current version of NodeJS - from https://nodejs.org/en/download/current/ To test that it was installed and running properly, go to your terminal and run the command: node -v You should get the node version printed on your terminal, for example, v8.8.0 -2. Although you are free to make you own choice of text/code editor to use during class and homework, we have good experiences with Microsoft's free VSCode editor, which is supported on Windows, Mac and Linux. Please refer to our [VSCode Tips](../VSCodeTips/VSCodeTips.md) for more information. +2. Although you are free to make you own choice of text/code editor to use during class and homework, we have good experiences with Microsoft's free VSCode editor, which is supported on Windows, Mac and Linux. Please refer to our [VSCode Tips](../VSCodeTips/README.md) for more information. ### Here are resources that we like you to read as a preparation for the coming lecture: From 0c576b52ac6bb9764ec273f6650cfbac073bb0e9 Mon Sep 17 00:00:00 2001 From: mkruijt Date: Fri, 10 Nov 2017 16:05:16 +0100 Subject: [PATCH 045/304] added branch versionOne which holds the old planning --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 423710fec..fe64871ff 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +*Please note: this is the JavaScript planning/curriculum that was used at HackYourFuture Amsterdam until 10 November 2017. We now use a different planning which can be found in the mater branch.** + >Please help us improve and share your feedback! If you find better tutorials or links, please share them by opening a Pull Request. # HackYourJavaScript From bfdb81c07d58bcce0a30a25f3a7c9c4104be117e Mon Sep 17 00:00:00 2001 From: mkruijt Date: Fri, 10 Nov 2017 16:51:55 +0100 Subject: [PATCH 046/304] first attempt new planning and changing homwork accordinly --- README.md | 32 +++------ Week2/README.md | 10 ++- Week3/MAKEME.md | 37 ++++++----- Week3/README.md | 1 - Week4/MAKEME.md | 29 ++++++--- Week4/README.md | 2 + Week5/MAKEME.md | 168 +++++++++++++++++++++++------------------------- Week5/README.md | 5 ++ Week6/MAKEME.md | 130 +++++++++++++++++++++---------------- Week7/MAKEME.md | 145 ++++++++++++++++++----------------------- Week8/MAKEME.md | 90 ++++++++++++++++++++++---- Week9/MAKEME.md | 90 ++++---------------------- 12 files changed, 371 insertions(+), 368 deletions(-) diff --git a/README.md b/README.md index fe64871ff..90cbd5186 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,9 @@ -*Please note: this is the JavaScript planning/curriculum that was used at HackYourFuture Amsterdam until 10 November 2017. We now use a different planning which can be found in the mater branch.** +*Please note: this is the JavaScript planning/curriculum only for class12, we changed the topic order while they already started JavaScript, because of this reason an additional planning has been made for them* >Please help us improve and share your feedback! If you find better tutorials or links, please share them by opening a Pull Request. # HackYourJavaScript - - Here you can find course content and homework for the JavaScript 1,2 and 3 modules |Week|Topic|Read|Homework|Review| @@ -13,30 +11,20 @@ Here you can find course content and homework for the JavaScript 1,2 and 3 modul |0.|Preparation for your first JavaScript session|[Pre-reading](https://github.com/HackYourFuture/JavaScript/tree/master/Week0) + [CLI Reading Week 1](https://github.com/HackYourFuture/CommandLine/blob/master/Lecture-1.md)|-| |1.|• [CLI](https://github.com/HackYourFuture/CommandLine) session with Unmesh :heart:
• Intro JavaScript (What is it, where can you use it for)
• Variables [var, let, const]
• Basic Data types [Strings, Numbers, Arrays, Booleans]
• Operators|[Reading Week 1](https://github.com/HackYourFuture/JavaScript/tree/master/Week1/README.md) | [Homework Week 1](https://github.com/HackYourFuture/JavaScript/tree/master/Week1/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week1/REVIEW.md)| |2.|• [CLI](https://github.com/HackYourFuture/CommandLine) session with Unmesh :balloon:
• Advanced data types [Objects]
• Conditions
• Statements vs Expressions
• Loops (for/while)
• Functions
• Naming conventions|[Reading Week 2](https://github.com/HackYourFuture/JavaScript/tree/master/Week2/README.md)|[Homework Week 2](https://github.com/HackYourFuture/JavaScript/tree/master/Week2/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week2/REVIEW.md)| -|3.|• Closures
• Scope
• Array Manipulations
• Basic DOM manipulations [img src, innerHTML]
• Code commenting|[Reading Week 3](https://github.com/HackYourFuture/JavaScript/tree/master/Week3)|[Homework Week 3](https://github.com/HackYourFuture/JavaScript/tree/master/Week3/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week3/REVIEW.md)| -|4.|• First Git Session with Unmesh :smiling_imp:
• JSON
• Code debugging using the browser
• Functions + JSON/Arrays
• Code flow (order of execution)
• (capturing user input)
• Structuring code files|[Reading Week 4](https://github.com/HackYourFuture/JavaScript/tree/master/Week4)|[JS](https://github.com/HackYourFuture/JavaScript/tree/master/Week4/MAKEME.md)|Review| -|5.|• Second Git Session :see_no_evil:
• Events
• Callbacks
• XHTTP Requests
• API calls|[Reading Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5)|[Homework Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week5/REVIEW.MD)| -|6.|• Async VS Sync
• Polling
• Structure for a basic SPA
TEST :boom:|[Reading Week 6](https://github.com/HackYourFuture/JavaScript/tree/master/Week6)|[Homework Week 6](https://github.com/HackYourFuture/JavaScript/tree/master/Week6/MAKEME.md)|Review| -|7.|• Third Git Session (Git Workflow :muscle:)
• Map, reduce, filter
• Arrow functions|[Reading Week 7](https://github.com/HackYourFuture/JavaScript/tree/master/Week7)|[Homework Week 7](https://github.com/HackYourFuture/JavaScript/tree/master/Week7/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week7/REVIEW.md)| -|8.|• (re)writing data structures (in JSON)
• Closures
• Promises
|[Reading Week 8](https://github.com/HackYourFuture/JavaScript/tree/master/Week8/README.md)|[Homework Week 8](https://github.com/HackYourFuture/JavaScript/tree/master/Week8/MAKEME.md)|Review| -|9.| • Object Literals (and other patterns)
TEST :boom:|[Reading Week 9](https://github.com/HackYourFuture/JavaScript/blob/master/Week9/README.md)|[Homework Week 9](https://github.com/HackYourFuture/JavaScript/blob/master/Week9/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week9/REVIEW.md)| - +|3.|- Capturing user input
- Basic DOM manipulations [img src, innerHTML]
- Code debugging using the browser
- Code commenting
- Structuring code files
- Scope
-State|[Reading Week 3](https://github.com/HackYourFuture/JavaScript/tree/master/Week3)|[Homework Week 3](https://github.com/HackYourFuture/JavaScript/tree/master/Week3/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week3/REVIEW.md)| +|4.| Git Session with Unmesh :smiling_imp:|[Reading Week 4](https://github.com/HackYourFuture/JavaScript/tree/master/Week4)|[JS](https://github.com/HackYourFuture/JavaScript/tree/master/Week4/MAKEME.md)|Review| +|5.| - Functions + JSON/Arrays
- Array Manipulations
- JSON +
- Map and filter
- Arrow functions|[Reading Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5)|[Homework Week 5](https://github.com/HackYourFuture/JavaScript/tree/master/Week5/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week5/REVIEW.MD)| +|6.|- Closures
- Events
- Callbacks
- Git [work flow](https://github.com/HackYourFuture/Git/blob/master/Lecture-3.md)|[Reading Week 6](https://github.com/HackYourFuture/JavaScript/tree/master/Week6)|[Homework Week 6](https://github.com/HackYourFuture/JavaScript/tree/master/Week6/MAKEME.md)|Review| +|7.|- (Object Oriented Programming)
- Code flow (order of execution)
+- Async VS Sync|[Reading Week 7](https://github.com/HackYourFuture/JavaScript/tree/master/Week7)|[Homework Week 7](https://github.com/HackYourFuture/JavaScript/tree/master/Week7/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week7/REVIEW.md)| +|8.|- Structure for a basic SPA
- XHTTP Requests
- API calls|[Reading Week 8](https://github.com/HackYourFuture/JavaScript/tree/master/Week8/README.md)|[Homework Week 8](https://github.com/HackYourFuture/JavaScript/tree/master/Week8/MAKEME.md)|Review| +|9.|- (re)writing data structures (in JSON)
- Promises|[Reading Week 9](https://github.com/HackYourFuture/JavaScript/blob/master/Week9/README.md)|[Homework Week 9](https://github.com/HackYourFuture/JavaScript/blob/master/Week9/MAKEME.md)|[Review](https://github.com/HackYourFuture/JavaScript/blob/master/Week9/REVIEW.md)| __Kind note:__ We expect you to __always__ come prepared to the class on Sunday. -## Module goals: - -### Week 1-3: -A basic program with multiple functions (reacting to user input) - -### Week 4-6: -A tool capable of loading a JSON file and representing it in the DOM - -### Week 7-9: -A web app with external data source using at least one API 《〠_〠》 - ### Overall A good understanding of all the above mentioned topics. Want to check your Knowledge? Go through the [JavaScript Fundamentals README](https://github.com/HackYourFuture/JavaScript/tree/master/fundamentals) and research/ ask for help (Slack!) with the concepts that are not entirely clear. diff --git a/Week2/README.md b/Week2/README.md index 56f7cd01a..3ed862abe 100644 --- a/Week2/README.md +++ b/Week2/README.md @@ -2,6 +2,14 @@ ``` In week three we will discuss the following topics: +- Capturing user input +- Basic DOM manipulations [img src, innerHTML] +- Code debugging using the browser +- Code commenting +- Structuring code files + + + • CLI (Command Line Interface) • Closures • Scope @@ -12,8 +20,6 @@ In week three we will discuss the following topics: ### Here are resources that we like you to read as a preparation for the coming lecture. -- [Closures](http://javascriptissexy.com/understand-javascript-closures-with-ease/) -- [MDN Closures](https://developer.mozilla.org/en/docs/Web/JavaScript/Closures) - [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype) diff --git a/Week3/MAKEME.md b/Week3/MAKEME.md index 955701d54..89834b982 100644 --- a/Week3/MAKEME.md +++ b/Week3/MAKEME.md @@ -2,7 +2,6 @@ >[Here](https://github.com/HackYourFuture/JavaScript/tree/master/Week3/README.md) you find the readings you have to complete before the fourth lecture. -Go here to see the [Git Homework](https://github.com/HackYourFuture/Git/blob/master/Lecture-1.md) ## Step 0 review: - Go through the review of [the first week](https://github.com/HackYourFuture/JavaScript/blob/master/Week1/REVIEW.md) (Work in progress, update this week :wrench:) @@ -23,34 +22,34 @@ Your fellow students have provided you with feedback in Trello. Your teachers ha _Deadline Monday_ -Your Github should contain two repositories called hyf-javascript1 and hyf-commandline . Inside the JavaScript repository you should have three folders, called week1, week2, and week3 (or something similar). Inside these folders you should have the different assignments (a file per exercises). Ty and find proper names for the exercises that reflect somehow what is going on in the code. Avoid using spaces in your file names, this makes it harder to "run" you files. Also make sure that all your JavaScript files have a `.js` extension. +Your Github should contain two repositories called hyf-javascript1 and hyf-commandline. Inside the JavaScript repository you should have three folders, called week1, week2, and week3 (or something similar). Inside these folders you should have the different assignments (a file per exercises). Ty and find proper names for the exercises that reflect somehow what is going on in the code. Avoid using spaces in your file names, this makes it harder to "run" you files. Also make sure that all your JavaScript files have a `.js` extension. ## Step 3: String and Array challenges _Deadline Wednesday_ -1. Strings! - 1.1 Let's consider the following string: `let myString = "hello,this,is,a,difficult,to,read,sentence"` - 1.2 Add the string to your file and console.log it. - 1.4 Console.log the length of `myString`. - 1.5 The comma's make that the sentence is quite hard to read. Find a way to remove the comma's from the sting and replace them with a spaces - 1.6 Console.log `myString` to see if you succeeded. +1. Strings! + 1. Let's consider the following string: `let myString = "hello,this,is,a,difficult,to,read,sentence"` + 2. Add the string to your file and console.log it. + 3. Console.log the length of `myString`. + 4. The comma's make that the sentence is quite hard to read. Find a way to remove the comma's from the sting and replace them with a spaces + 5. Console.log `myString` to see if you succeeded. -2. Arrays! +2. Arrays! consider the following array: ```js let favoriteAnimals = ['blowfish', 'capricorn', 'giraffe']; ``` - 2.6 Add a statement that adds Mauro's favorite animal (turtle) to the existing array - 2.7 Log your new array! - 2.8 Now add Jim's favorite animal to the array, its a meerkat, but make sure it will be placed after 'blowfish' and before 'capricorn'. - 2.9 Write a console.log statement that explains in words _you think_ the new value of the array is. - 2.10 Log your new new array! - 2.11 Log the length of the array, add a message: "The array has a length of: "(here you should show the length of the array) - 2.12 Jason does not like giraffes, delete this animal from the array - 2.13 Again log your new array. - 2.14 Now if unlike Jim, you don't like meerkats and you want to delete it from the array, but you don't know the position or the `index` of the item in the array, how can you find it? - 2.15 Log the index of meerkat to the console. Add a message so it says: "The item you are looking for is at index: " (here you should show the index of the item) + 1. Add a statement that adds Mauro's favorite animal (turtle) to the existing array + 2. Log your new array! + 3. Now add Jim's favorite animal to the array, its a meerkat, but make sure it will be placed after 'blowfish' and before 'capricorn'. + 4. Write a console.log statement that explains in words _you think_ the new value of the array is. + 5. Log your new new array! + 6. Log the length of the array, add a message: "The array has a length of: "(here you should show the length of the array) + 7. Jason does not like giraffes, delete this animal from the array + 8. Again log your new array. + 9. Now if unlike Jim, you don't like meerkats and you want to delete it from the array, but you don't know the position or the `index` of the item in the array, how can you find it? + 10. Log the index of meerkat to the console. Add a message so it says: "The item you are looking for is at index: " (here you should show the index of the item) ## Step 4: Custom DOM manipulation challenge :mortar_board: diff --git a/Week3/README.md b/Week3/README.md index 413fb2d0d..f4dc563f8 100644 --- a/Week3/README.md +++ b/Week3/README.md @@ -13,7 +13,6 @@ In week four we will discuss the following topics: ### Here are resources that we like you to read as a preparation for the coming lecture. -- [JSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) (MDN) - In you next lecture **Unmesh** will give you your first Git session, please look through the [GIT](https://github.com/HackYourFuture/Gitrepository) and read the learning goals. - Chrome DevTools [Debugging](https://developers.google.com/web/tools/chrome-devtools/?utm_source=dcc&utm_medium=redirect&utm_campaign=2016q3) diff --git a/Week4/MAKEME.md b/Week4/MAKEME.md index 2e080dc1e..3b6918ff2 100644 --- a/Week4/MAKEME.md +++ b/Week4/MAKEME.md @@ -5,17 +5,30 @@ ## Step 0: Give yourself (or your neighbour) a little tap on the shoulder, you've made it to JS2! :muscle: +#### GIT +Go here to see the [Git Homework](https://github.com/HackYourFuture/Git/blob/master/Lecture-1.md) + +### Step 4: Git branching homework + +1) Use the unmeshvrije/MyFirst repository (the one you cloned) for this homework. + +2) Make a branch. + +3) Name it YOUR-GITHUB-NAME-dev + +4) Create a file commands.txt in your branch. + +5) Add bash commands that you have learnt with descriptions + +6) Then git add, commit and push them in a remote branch. + +**Do not merge the changes to master branch. + +** Do not make any changes to master branch. + ## Step 1: Some Challenges Let's practice working with Objects and Arrays. Go to FreeCodeCamp and complete all challenges under "Object Oriented and Functional Programming" and the _first four challenges_ under "Basic Algorithm Scripting", up until 'Find the longest word in a string.' -## Step 2: Custom challenge -1. Go to https://api.github.com/orgs/HackYourFuture/repos, you will see a list of the repositories our HYF organization has (yes it's a lot of JSON). -2. You can copy the JSON and put it in a string at the top of your `.js` file. Print the name of the 3rd repository in the array to the console. -3. Make a `