From 7292c25c5a9b69e610166b40c9d80ba0ebcc385e Mon Sep 17 00:00:00 2001 From: Stuart Date: Fri, 1 Jul 2016 15:47:06 +0100 Subject: [PATCH 01/11] Temp fix for missing test suite --- client/commonFramework/display-test-results.js | 1 - client/commonFramework/end.js | 1 - 2 files changed, 2 deletions(-) diff --git a/client/commonFramework/display-test-results.js b/client/commonFramework/display-test-results.js index 0647384c87..df09d26734 100644 --- a/client/commonFramework/display-test-results.js +++ b/client/commonFramework/display-test-results.js @@ -2,7 +2,6 @@ window.common = (function({ $, common = { init: [] }}) { common.displayTestResults = function displayTestResults(data = [], down) { $('#testSuite').children().remove(); - $('#testSuite').fadeIn('slow'); data.forEach(({ err = false, text = '' }) => { var iconClass = err ? '"ion-close-circled big-error-icon"' : diff --git a/client/commonFramework/end.js b/client/commonFramework/end.js index 1a8ae7be86..4f22de3e28 100644 --- a/client/commonFramework/end.js +++ b/client/commonFramework/end.js @@ -89,7 +89,6 @@ $(document).ready(function() { common.submitBtn$ ) .flatMap(() => { - $('#testSuite').fadeOut('slow'); common.appendToOutputDisplay('\n// testing challenge...'); return common.executeChallenge$() .map(({ tests, ...rest }) => { From 70ce060bda7c9a32deb37ad58d11be0e233a276b Mon Sep 17 00:00:00 2001 From: BKinahan Date: Tue, 5 Jul 2016 19:26:17 +0000 Subject: [PATCH 02/11] Add test for Smallest Common Multiple --- .../intermediate-bonfires.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/seed/challenges/01-front-end-development-certification/intermediate-bonfires.json b/seed/challenges/01-front-end-development-certification/intermediate-bonfires.json index c1e11bd3b4..89baafc0ea 100644 --- a/seed/challenges/01-front-end-development-certification/intermediate-bonfires.json +++ b/seed/challenges/01-front-end-development-certification/intermediate-bonfires.json @@ -728,7 +728,8 @@ "assert.deepEqual(typeof smallestCommons([1, 5]), 'number', 'message: smallestCommons([1, 5]) should return a number.');", "assert.deepEqual(smallestCommons([1, 5]), 60, 'message: smallestCommons([1, 5]) should return 60.');", "assert.deepEqual(smallestCommons([5, 1]), 60, 'message: smallestCommons([5, 1]) should return 60.');", - "assert.deepEqual(smallestCommons([1, 13]), 360360, 'message: smallestCommons([1, 13]) should return 360360.');" + "assert.deepEqual(smallestCommons([1, 13]), 360360, 'message: smallestCommons([1, 13]) should return 360360.');", + "assert.deepEqual(smallestCommons([23, 18]), 6056820, 'message: smallestCommons([23, 18]) should return 6056820.');" ], "type": "bonfire", "MDNlinks": [ From e8a21ef5ac5ac31992481fc87a9584a1d5df4e98 Mon Sep 17 00:00:00 2001 From: BKinahan Date: Thu, 7 Jul 2016 15:32:10 +0000 Subject: [PATCH 03/11] Clarify Pig Latin input strings are all lowercase --- .../intermediate-bonfires.json | 1 + 1 file changed, 1 insertion(+) diff --git a/seed/challenges/01-front-end-development-certification/intermediate-bonfires.json b/seed/challenges/01-front-end-development-certification/intermediate-bonfires.json index 5df53a4893..e81472a600 100644 --- a/seed/challenges/01-front-end-development-certification/intermediate-bonfires.json +++ b/seed/challenges/01-front-end-development-certification/intermediate-bonfires.json @@ -280,6 +280,7 @@ "Translate the provided string to pig latin.", "Pig Latin takes the first consonant (or consonant cluster) of an English word, moves it to the end of the word and suffixes an \"ay\".", "If a word begins with a vowel you just add \"way\" to the end.", + "Input strings are guaranteed to be English words in all lowercase.", "Remember to use Read-Search-Ask if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ From 9a53528f885b19302a279ba9c3c3f29ec0d37928 Mon Sep 17 00:00:00 2001 From: Quincy Larson Date: Fri, 8 Jul 2016 18:58:10 -0700 Subject: [PATCH 04/11] change first edition eloquent javascript link to 2nd edition link --- server/views/resources/shop.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/views/resources/shop.jade b/server/views/resources/shop.jade index bc561c60fc..56b5cee752 100644 --- a/server/views/resources/shop.jade +++ b/server/views/resources/shop.jade @@ -62,7 +62,7 @@ block content .spacer img.img-responsive.img-center(src='//i.imgur.com/CR2dSql.jpg' alt='Eloquent JavaScript: A Modern Introduction to Programming book cover') .button-spacer - a.btn.signup-btn(href="//www.amazon.com/gp/product/1593272820/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1593272820&linkCode=as2&tag=out0b4b-20&linkId=c1c6d7e0eed6ae696a4bffe7eb935711" onClick="ga('send', 'event', 'SHOP', 'SHOP-ELOQUENT-JAVASCRIPT', 'Eloquent JavaScript affiliate button clicked');" target='_blank') Buy "Elopquent JavaScript" on Amazon + a.btn.signup-btn(href="//www.amazon.com/gp/product/1593275846/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1593275846&linkCode=as2&tag=out0b4b-20&linkId=6870174eac22afca8e1c1ef5204f16ee" onClick="ga('send', 'event', 'SHOP', 'SHOP-ELOQUENT-JAVASCRIPT', 'Eloquent JavaScript affiliate button clicked');" target='_blank') Buy "Elopquent JavaScript" on Amazon .spacer hr .spacer From 3c95ea0e15884e81370117bea4f18bd310b747ae Mon Sep 17 00:00:00 2001 From: Quincy Larson Date: Fri, 8 Jul 2016 19:00:17 -0700 Subject: [PATCH 05/11] remove hodor from congratulatory quotes - it's not funny anymore --- server/utils/resources.json | 1 - 1 file changed, 1 deletion(-) diff --git a/server/utils/resources.json b/server/utils/resources.json index 092d82895b..758c75b1c7 100644 --- a/server/utils/resources.json +++ b/server/utils/resources.json @@ -90,7 +90,6 @@ "You're heating up!", "Hasta la vista, challenge!", "Terminated.", - "Hodor!", "Off the hook!", "Thundercats, Hooo!", "Shiver me timbers!", From 84d8bb221df7b908b281cc30973cee130ce6ac62 Mon Sep 17 00:00:00 2001 From: Sergio Rojas Date: Sat, 9 Jul 2016 07:36:20 -0700 Subject: [PATCH 06/11] Update basic-javascript.json --- .../basic-javascript.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seed/challenges/01-front-end-development-certification/basic-javascript.json b/seed/challenges/01-front-end-development-certification/basic-javascript.json index 74c127c902..6b81a00965 100644 --- a/seed/challenges/01-front-end-development-certification/basic-javascript.json +++ b/seed/challenges/01-front-end-development-certification/basic-javascript.json @@ -1766,7 +1766,7 @@ "id": "56592a60ddddeae28f7aa8e1", "title": "Access Multi-Dimensional Arrays With Indexes", "description": [ - "One way to think of a multi-dimensional array, is as an array of arrays. When you use brackets to access your array, the first set of bracket refers to the entries in the outer-most (the first level) array, and each additional pair of brackets refers to the next level of entries inside.", + "One way to think of a multi-dimensional array, is as an array of arrays. When you use brackets to access your array, the first set of brackets refers to the entries in the outer-most (the first level) array, and each additional pair of brackets refers to the next level of entries inside.", "Example", "
var arr = [
[1,2,3],
[4,5,6],
[7,8,9],
[[10,11,12], 13, 14]
];
arr[3]; // equals [[10,11,12], 13, 14]
arr[3][0]; // equals [10,11,12]
arr[3][0][1]; // equals 11
", "

Instructions

", From bcd5ca388ceb982bf4a79432eb7200c9d9223249 Mon Sep 17 00:00:00 2001 From: Abhisek Pattnaik Date: Fri, 8 Jul 2016 04:59:10 +0530 Subject: [PATCH 07/11] :checkered_flag: Improve/Fix Record Collection Challenge docs(challenge): :book: :checkered_flag: improve instruction wording - improve wording of instruction - fix invalid tag style(challenge): :dancer: :checkered_flag: Fix whitespace in challenge seed - Fix whitespace in challenge seed - Prepend semicolon in tail code so that challenge works even if challenge seed doesn't end with a semicolon. refactor(challenge): :wrench: :checkered_flag: Improved readability of solution --- .../basic-javascript.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/seed/challenges/01-front-end-development-certification/basic-javascript.json b/seed/challenges/01-front-end-development-certification/basic-javascript.json index 6b81a00965..3f8638d859 100644 --- a/seed/challenges/01-front-end-development-certification/basic-javascript.json +++ b/seed/challenges/01-front-end-development-certification/basic-javascript.json @@ -2052,7 +2052,7 @@ "

Instructions

", "
  1. Create a function called reusableFunction which prints \"Hi World\" to the dev console.
  2. Call the function.
" ], - "head": [ + "head": [ "var logOutput = \"\";", "var originalConsole = console", "function capture() {", @@ -4513,15 +4513,15 @@ "description": [ "You are given a JSON object representing a part of your musical album collection. Each album has several properties and a unique id number as its key. Not all albums have complete information.", "Write a function which takes an album's id (like 2548), a property prop (like \"artist\" or \"tracks\"), and a value (like \"Addicted to Love\") to modify the data in this collection.", - "If prop isn't \"tracks\" and value isn't blank, update or set the value for that record album's property.", + "If prop isn't \"tracks\" and value isn't empty (\"\"), update or set the value for that record album's property.", "Your function must always return the entire collection object.", "There are several rules for handling incomplete data:", "If prop is \"tracks\" but the album doesn't have a \"tracks\" property, create an empty array before adding the new value to the album's corresponding property.", - "If prop is \"tracks\" and value isn't blank, push the value onto the end of the album's existing tracks array.", - "If value is blank, delete that property from the album.", + "If prop is \"tracks\" and value isn't empty (\"\"), push the value onto the end of the album's existing tracks array.", + "If value is empty (\"\"), delete the given prop property from the album.", "Hints
Use bracket notation when accessing object properties with variables.", "Push is an array method you can read about on Mozilla Developer Network.", - "You may refer back to Manipulating Complex ObjectsIntroducing JavaScript Object Notation (JSON) for a refresher." + "You may refer back to Manipulating Complex Objects Introducing JavaScript Object Notation (JSON) for a refresher." ], "releasedOn": "January 1, 2016", "challengeSeed": [ @@ -4556,8 +4556,8 @@ "", "// Only change code below this line", "function updateRecords(id, prop, value) {", - "", - "", + " ", + " ", " return collection;", "}", "", @@ -4566,10 +4566,10 @@ "" ], "tail": [ - "(function(x) { return \"collection = \\n\" + JSON.stringify(x, '\\n', 2); })(collection);" + ";(function(x) { return \"collection = \\n\" + JSON.stringify(x, '\\n', 2); })(collection);" ], "solutions": [ - "var collection = {\n 2548: {\n album: \"Slippery When Wet\",\n artist: \"Bon Jovi\",\n tracks: [ \n \"Let It Rock\", \n \"You Give Love a Bad Name\" \n ]\n },\n 2468: {\n album: \"1999\",\n artist: \"Prince\",\n tracks: [ \n \"1999\", \n \"Little Red Corvette\" \n ]\n },\n 1245: {\n artist: \"Robert Palmer\",\n tracks: [ ]\n },\n 5439: {\n album: \"ABBA Gold\"\n }\n};\n// Keep a copy of the collection for tests\nvar collectionCopy = JSON.parse(JSON.stringify(collection));\n\n// Only change code below this line\nfunction updateRecords(id, prop, value) {\n if(value !== \"\") {\n if(prop === \"tracks\") {\n collection[id][prop]= collection[id][prop] || [];\n collection[id][prop].push(value);\n } else {\n collection[id][prop] = value;\n }\n } else {\n delete collection[id][prop];\n }\n\n return collection;\n}" + "var collection = {\n 2548: {\n album: \"Slippery When Wet\",\n artist: \"Bon Jovi\",\n tracks: [ \n \"Let It Rock\", \n \"You Give Love a Bad Name\" \n ]\n },\n 2468: {\n album: \"1999\",\n artist: \"Prince\",\n tracks: [ \n \"1999\", \n \"Little Red Corvette\" \n ]\n },\n 1245: {\n artist: \"Robert Palmer\",\n tracks: [ ]\n },\n 5439: {\n album: \"ABBA Gold\"\n }\n};\n// Keep a copy of the collection for tests\nvar collectionCopy = JSON.parse(JSON.stringify(collection));\n\n// Only change code below this line\nfunction updateRecords(id, prop, value) {\n if(value === \"\") delete collection[id][prop];\n else if(prop === \"tracks\") {\n collection[id][prop] = collection[id][prop] || [];\n collection[id][prop].push(value);\n } else {\n collection[id][prop] = value;\n }\n \n return collection;\n}" ], "tests": [ "collection = collectionCopy; assert(updateRecords(5439, \"artist\", \"ABBA\")[5439][\"artist\"] === \"ABBA\", 'message: After updateRecords(5439, \"artist\", \"ABBA\"), artist should be \"ABBA\"');", From bff127e4a49d9c7fc6559ce9bc8177f4658fa9aa Mon Sep 17 00:00:00 2001 From: Quincy Larson Date: Sun, 10 Jul 2016 16:35:38 -0700 Subject: [PATCH 08/11] update landing page copy based off optimizely result --- server/views/home.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/views/home.jade b/server/views/home.jade index 68a25055a8..cf604d3110 100644 --- a/server/views/home.jade +++ b/server/views/home.jade @@ -20,7 +20,7 @@ block content img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_portfolio.svg', alt='Get hired as a developer and start your software engineer career') p.large-p a(href='/stories') 2,000+ - |  campers now have developer jobs + |  people like you now have developer jobs .big-break .big-break .row From dfefa01baf591d9b49356eeb185314c28360832f Mon Sep 17 00:00:00 2001 From: "Daniel L. Weber" Date: Sun, 10 Jul 2016 15:11:47 -0400 Subject: [PATCH 09/11] Updated Claim your Data Visualization Certificate screenshots to new green background --- .../data-visualization-certificate.json | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/seed/challenges/02-data-visualization-certification/data-visualization-certificate.json b/seed/challenges/02-data-visualization-certification/data-visualization-certificate.json index 678c907536..43a33a89fd 100644 --- a/seed/challenges/02-data-visualization-certification/data-visualization-certificate.json +++ b/seed/challenges/02-data-visualization-certification/data-visualization-certificate.json @@ -14,20 +14,20 @@ "" ], [ - "//i.imgur.com/HArFfMN.jpg", + "//i.imgur.com/woACUFX.png", "The definition of plagiarism: Plagiarism (noun) - copying someone else’s work and presenting it as your own without crediting them", "By clicking below, you pledge that all of your submitted code A) is code you or your pair personally wrote, or B) comes from open source libraries like jQuery, or C) has been clearly attributed to its original authors. You also give us permission to audit your challenge solutions and revoke your certificate if we discover evidence of plagiarism.", "#" ], [ - "//i.imgur.com/14F2Van.jpg", + "//i.imgur.com/nTuA3rZ.png", "An image of the text \"Data Visualization Certificate requirements\"", "Let's confirm that you have completed our React and D3.js projects. Click the button below to verify this.", "#" ], [ - "//i.imgur.com/16SIhHO.jpg", - "An image of the word \"Congratulations\"", + "//i.imgur.com/3Is4oV0.png", + "An image of the word \"Congratulations!\"", "Congratulations! We've added your Data Visualization Certificate to your portfolio page. Unless you choose to hide your solutions, this certificate will remain publicly visible and verifiable.", "" ] @@ -100,20 +100,20 @@ "" ], [ - "//i.imgur.com/HArFfMN.jpg", + "//i.imgur.com/swuEma9.png", "Plagio (nombre): acción y efecto de plagiar. Plagiar (verbo) - copiar en lo sustancial obras ajenas, dándolas como propias.", "Al pulsar el botón siguiente, juras que todo el código en tus soluciones a los desafíos A) es código que tú o tu compañero escribieron personalmente, o B) proviene de librerías de código abierto como jQuery, o C) ha sido claramente atribuido a sus autores originales. También nos otorgas el permiso para auditar tus soluciones a los desafíos y revocar tu certificado si encontramos evidencia de plagio.", "#" ], [ - "//i.imgur.com/14F2Van.jpg", - "Una imagen del texto \"Data Visualization Certificate requirements\"", + "//i.imgur.com/6b50POD.png", + "Una imagen del texto \"Los requisitos de Certificación de Visualización de datos\"", "Confirmemos que has completado todos nuestros proyectos en React y D3.js. Pulsa el botón siguiente para hacer la verificación.", "#" ], [ - "//i.imgur.com/16SIhHO.jpg", - "Una imagen de la palabra \"Congratulations\"", + "//i.imgur.com/PnFG11N.png", + "Una imagen de la palabra \"Felicitaciones!\"", "¡Felicitaciones! Hemos agregado tu certificado de Visualización de datos a tu portafolio. A menos que elijas no mostrar tus soluciones, este certificado será públicamente visible y verificable.", "" ] @@ -127,20 +127,20 @@ "" ], [ - "//i.imgur.com/HArFfMN.jpg", + "//i.imgur.com/iFL1xR1.png", "Une définition du plagiat : Plagiat (nom) – copier le travail d’un autre et le présenter comme étant le tien, sans mention de l’auteur original", "En cliquant si dessous, je garantie que tout le code que j’ai présenté A) est mon propre code ou celui de mon collaborateur, B) vient d’un projet open-source comme jQuery, ou C) contient les mentions nécessaires des auteurs. Vous nous donnez aussi la permission de vérifier vos solutions et de révoquer votre certificat en cas de détection de plagiat.", "#" ], [ - "//i.imgur.com/14F2Van.jpg", - "Une image du texte \"Data Visualization Certificate requirements\"", + "//i.imgur.com/0GZ0KHa.png", + "Une image du texte \"Les exigences de certification de visualisation de données\"", "On va confirmer maintenant que vous avez bien terminé nos projets de React et D3.js. Cliquez sur le bouton si dessous pour vérifier cela.", "#" ], [ - "//i.imgur.com/16SIhHO.jpg", - "Une image du mot \"Congratulations\"", + "//i.imgur.com/EJXMNIQ.png", + "Une image du mot \"Félicitations à vous!\"", "Félicitations! On vient d’ajouter votre Certificat de Visualisation de données à votre profile. Cette certificat est public et vérifiable, mais vous pouvez le cacher si vous désirer.", "" ] From 44eba03a1d6a40a2a55347b906ace5e6760d7028 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Mon, 11 Jul 2016 14:56:14 +0000 Subject: [PATCH 10/11] fix: package.json & .snyk to reduce vulnerabilities --- .snyk | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.snyk b/.snyk index 9daf4f36d6..6e1a16cd62 100644 --- a/.snyk +++ b/.snyk @@ -15,6 +15,14 @@ patch: patched: '2016-07-09T00:55:04.882Z' - gulp > vinyl-fs > glob-watcher > gaze > globule > glob > minimatch: patched: '2016-07-09T00:55:04.882Z' + - gulp-nodemon > gulp > vinyl-fs > glob-stream > minimatch: + patched: '2016-07-11T14:56:14.310Z' + - gulp-nodemon > gulp > vinyl-fs > glob-stream > glob > minimatch: + patched: '2016-07-11T14:56:14.310Z' + - gulp-nodemon > gulp > vinyl-fs > glob-watcher > gaze > globule > minimatch: + patched: '2016-07-11T14:56:14.310Z' + - gulp-nodemon > gulp > vinyl-fs > glob-watcher > gaze > globule > glob > minimatch: + patched: '2016-07-11T14:56:14.310Z' 'npm:uglify-js:20151024': - jade > transformers > uglify-js: patched: '2016-07-09T00:55:04.882Z' From 87dd8a66b05ca85bff93ee2be17f87e93f307e4c Mon Sep 17 00:00:00 2001 From: Blessing Edugie Ebowe Date: Mon, 11 Jul 2016 14:19:37 +0100 Subject: [PATCH 11/11] Correct text for computer basics question --- seed/challenges/04-video-challenges/computer-basics.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/seed/challenges/04-video-challenges/computer-basics.json b/seed/challenges/04-video-challenges/computer-basics.json index a1e983eff8..ae034441f7 100644 --- a/seed/challenges/04-video-challenges/computer-basics.json +++ b/seed/challenges/04-video-challenges/computer-basics.json @@ -362,7 +362,7 @@ "In audio download, we talk about kilobits per second.", "In internet, we use megabits per second.", "In network speed, we talk about gigabits per second (one billion bits per second!).", - "The main takeaway here is that speed is usually measured in bits and size is measured in bytes.", + "The main takeaway here is that speed is usually measured in bits per second and size is measured in bytes.", "Additionally, if you have an internet speed that says however many bits per second, keep in mind they are talking about something 8 times less than bytes, how you are thinking about data." ], "challengeSeed": [ @@ -370,13 +370,13 @@ ], "tests": [ [ - "Data speed is measured in bits.", + "Data speed is measured in bits per second.", true ], [ "Data size is measured in bits.", false, - "Size is bytes and speed is bits." + "Size is bytes and speed is bits per second." ] ], "type": "hike", @@ -391,7 +391,7 @@ "En descarga de audio, hablamos de kilobits por segundo.", "En Internet, utilizamos megabits por segundo.", "En la velocidad de red, hablamos de gigabits por segundo (¡mil millones de bits por segundo!).", - "La conclusión principal es que la velocidad se mide generalmente en bits mientras que el tamaño se mide en bytes.", + "La conclusión principal es que la velocidad se mide generalmente en bits por segundo mientras que el tamaño se mide en bytes.", "Además, si tienes una velocidad de internet de cierta cantidad de bits por segundo, ten en cuenta que te están hablando de algo que es la octava parte de la cantidad en bytes, que es la manera típica como mides tamaños de datos." ], "titleEs": "Fundamentos básicos del computador: medición de la velocidad de datos"