From 3b32da01917a9ae34c8eee531eb29cad84513140 Mon Sep 17 00:00:00 2001 From: camperbot Date: Fri, 16 Jul 2021 11:03:16 +0530 Subject: [PATCH] chore(i18n,curriculum): processed translations (#42868) --- .../create-decimal-numbers-with-javascript.md | 2 +- .../use-body-parser-to-parse-post-requests.md | 8 +- .../data-analysis-example-a.md | 20 +- .../data-analysis-example-b.md | 2 +- .../data-cleaning-and-visualizations.md | 18 +- .../data-cleaning-duplicates.md | 18 +- .../data-cleaning-introduction.md | 2 +- .../data-cleaning-with-dataframes.md | 12 +- .../how-to-use-jupyter-notebooks-intro.md | 17 +- .../introduction-to-data-analysis.md | 17 +- .../jupyter-notebooks-cells.md | 19 +- ...-notebooks-importing-and-exporting-data.md | 23 +- .../numpy-algebra-and-size.md | 20 +- .../numpy-arrays.md | 12 +- .../numpy-boolean-arrays.md | 12 +- .../numpy-introduction-a.md | 18 +- .../numpy-introduction-b.md | 20 +- .../numpy-operations.md | 12 +- ...onal-selection-and-modifying-dataframes.md | 12 +- .../pandas-creating-columns.md | 12 +- .../pandas-dataframes.md | 10 +- ...ndas-indexing-and-conditional-selection.md | 12 +- .../pandas-introduction.md | 12 +- .../parsing-html-and-saving-data.md | 12 +- .../python-functions-and-collections.md | 18 +- .../python-introduction.md | 20 +- .../python-iteration-and-modules.md | 12 +- .../reading-data-csv-and-txt.md | 12 +- .../reading-data-from-databases.md | 18 +- .../reading-data-introduction.md | 14 +- .../demographic-data-analyzer.md | 13 +- .../medical-data-visualizer.md | 13 +- .../page-view-time-series-visualizer.md | 13 +- .../sea-level-predictor.md | 13 +- ...ng-and-changing-elements,-rows,-columns.md | 4 +- .../numpy/basics-of-numpy.md | 4 +- .../numpy/copying-arrays-warning.md | 4 +- .../numpy/initialize-array-problem.md | 4 +- .../numpy/initializing-different-arrays.md | 4 +- .../numpy/mathematics.md | 4 +- .../numpy/reorganizing-arrays.md | 4 +- .../anonymous-message-board.md | 104 +++++--- .../port-scanner.md | 17 +- .../secure-real-time-multiplayer-game.md | 85 ++++--- .../sha-1-password-cracker.md | 17 +- .../stock-price-checker.md | 50 ++-- ...ur-site-via-https-only-with-helmet.hsts.md | 14 +- ...-response-mime-type-with-helmet.nosniff.md | 8 +- ...lmet-using-the-parent-helmet-middleware.md | 14 +- ...client-side-caching-with-helmet.nocache.md | 10 +- ...fetching-with-helmet.dnsprefetchcontrol.md | 10 +- ...sh-and-compare-passwords-asynchronously.md | 16 +- ...ash-and-compare-passwords-synchronously.md | 16 +- ...-information-using-helmet.hidepoweredby.md | 8 +- .../install-and-require-helmet.md | 23 +- ...-of-clickjacking-with-helmet.frameguard.md | 14 +- ...pting-xss-attacks-with-helmet.xssfilter.md | 16 +- ...ing-untrusted-html-with-helmet.ienoopen.md | 10 +- ...olicy-with-helmet.contentsecuritypolicy.md | 16 +- .../understand-bcrypt-hashes.md | 18 +- .../creating-a-tcp-client.md | 4 +- .../developing-a-banner-grabber.md | 4 +- .../developing-a-port-scanner.md | 10 +- .../developing-an-nmap-scanner-part-1.md | 4 +- .../developing-an-nmap-scanner-part-2.md | 4 +- .../introduction-and-setup.md | 10 +- .../data-structures/create-a-hash-table.md | 66 +++-- .../create-a-priority-queue-class.md | 8 +- .../data-structures/create-a-stack-class.md | 7 +- .../create-an-es6-javascript-map.md | 2 + .../create-and-add-to-sets-in-es6.md | 12 +- .../insert-an-element-into-a-max-heap.md | 8 +- .../remove-items-from-a-set-in-es6.md | 11 +- .../data-structures/typed-arrays.md | 4 +- .../use-.has-and-.size-on-an-es6-set.md | 12 +- .../problem-100-arranged-probability.md | 59 ++++- .../problem-101-optimum-polynomial.md | 22 +- .../problem-102-triangle-containment.md | 130 +++++++++- ...problem-103-special-subset-sums-optimum.md | 27 +- .../problem-104-pandigital-fibonacci-ends.md | 14 +- ...problem-105-special-subset-sums-testing.md | 33 ++- ...em-106-special-subset-sums-meta-testing.md | 17 +- .../problem-107-minimal-network.md | 41 +++- .../problem-108-diophantine-reciprocals-i.md | 8 +- .../project-euler/problem-109-darts.md | 24 +- .../problem-110-diophantine-reciprocals-ii.md | 6 +- .../problem-111-primes-with-runs.md | 29 ++- .../problem-112-bouncy-numbers.md | 8 +- .../problem-113-non-bouncy-numbers.md | 12 +- ...oblem-114-counting-block-combinations-i.md | 14 +- ...blem-115-counting-block-combinations-ii.md | 22 +- .../problem-116-red-green-or-blue-tiles.md | 18 +- .../problem-117-red-green-and-blue-tiles.md | 14 +- .../problem-118-pandigital-prime-sets.md | 10 +- .../problem-119-digit-power-sum.md | 16 +- .../problem-120-square-remainders.md | 14 +- .../problem-182-rsa-encryption.md | 74 +++++- .../problem-32-pandigital-products.md | 70 ++++-- .../project-euler/problem-349-langtons-ant.md | 2 +- .../problem-38-pandigital-multiples.md | 57 +++-- .../problem-43-sub-string-divisibility.md | 115 ++++++--- .../project-euler/problem-461-almost-pi.md | 133 ++++++++-- .../problem-51-prime-digit-replacements.md | 93 ++++++- .../problem-52-permuted-multiples.md | 26 +- .../problem-56-powerful-digit-sum.md | 73 +++++- .../problem-57-square-root-convergents.md | 54 +++- .../project-euler/problem-58-spiral-primes.md | 63 ++++- .../problem-61-cyclical-figurate-numbers.md | 231 ++++++++++++++++-- .../problem-62-cubic-permutations.md | 69 +++++- .../problem-63-powerful-digit-counts.md | 92 ++++++- .../problem-64-odd-period-square-roots.md | 64 ++++- .../problem-65-convergents-of-e.md | 71 +++++- .../problem-66-diophantine-equation.md | 81 +++++- .../problem-67-maximum-path-sum-ii.md | 32 ++- .../problem-69-totient-maximum.md | 88 +++++-- .../problem-70-totient-permutation.md | 90 ++++++- .../problem-71-ordered-fractions.md | 65 ++++- .../problem-72-counting-fractions.md | 60 ++++- ...roblem-73-counting-fractions-in-a-range.md | 53 +++- .../problem-74-digit-factorial-chains.md | 96 ++++++-- ...lem-75-singular-integer-right-triangles.md | 76 +++++- .../problem-76-counting-summations.md | 46 +++- .../problem-77-prime-summations.md | 74 +++++- .../problem-78-coin-partitions.md | 63 ++++- .../problem-79-passcode-derivation.md | 79 +++++- ...roblem-80-square-root-digital-expansion.md | 79 +++++- .../problem-81-path-sum-two-ways.md | 70 ++++-- .../problem-82-path-sum-three-ways.md | 78 ++++-- .../problem-83-path-sum-four-ways.md | 98 ++++++-- .../project-euler/problem-84-monopoly-odds.md | 130 +++++++++- .../problem-85-counting-rectangles.md | 77 +++++- .../project-euler/problem-86-cuboid-route.md | 60 ++++- .../problem-87-prime-power-triples.md | 98 +++++++- .../problem-88-product-sum-numbers.md | 72 +++++- .../problem-89-roman-numerals.md | 72 +++++- ...ight-triangles-with-integer-coordinates.md | 87 ++++++- .../problem-92-square-digit-chains.md | 121 ++++++++- ...problem-94-almost-equilateral-triangles.md | 54 +++- .../problem-95-amicable-chains.md | 90 ++++++- .../project-euler/problem-96-su-doku.md | 129 ++++++++-- .../problem-97-large-non-mersenne-prime.md | 60 ++++- .../problem-98-anagramic-squares.md | 173 ++++++++++++- .../problem-99-largest-exponential.md | 55 +++-- .../rosetta-code/100-doors.md | 4 +- ...ient-and-perfect-number-classifications.md | 34 +-- .../rosetta-code/align-columns.md | 89 ++++--- .../rosetta-code/closest-pair-problem.md | 105 ++++++-- .../convert-seconds-to-compound-duration.md | 2 +- .../rosetta-code/count-the-coins.md | 27 +- .../rosetta-code/cut-a-rectangle.md | 117 +++++---- .../rosetta-code/date-format.md | 18 +- .../rosetta-code/emirp-primes.md | 2 +- .../execute-a-markov-algorithm.md | 40 +-- .../factors-of-a-mersenne-number.md | 8 +- .../rosetta-code/hailstone-sequence.md | 66 +++-- .../rosetta-code/happy-numbers.md | 22 +- .../rosetta-code/harshad-or-niven-series.md | 61 ++--- .../rosetta-code/josephus-problem.md | 57 ++--- .../knapsack-problem-unbounded.md | 88 ++++--- .../rosetta-code/knights-tour.md | 215 ++++++++++------ .../rosetta-code/letter-frequency.md | 8 +- ...oop-over-multiple-arrays-simultaneously.md | 8 +- .../rosetta-code/s-expressions.md | 6 +- .../rosetta-code/sha-256.md | 4 +- .../rosetta-code/sort-disjoint-sublist.md | 4 +- ...ter-string-based-on-change-of-character.md | 6 +- .../rosetta-code/sudoku.md | 2 +- .../rosetta-code/sum-of-a-series.md | 2 +- .../rosetta-code/sum-to-100.md | 10 - .../rosetta-code/top-rank-per-group.md | 60 +++-- .../rosetta-code/topological-sort.md | 65 +++-- .../rosetta-code/vector-cross-product.md | 6 +- .../zeckendorf-number-representation.md | 153 ++++++++++-- .../zhang-suen-thinning-algorithm.md | 185 +++++++------- .../build-a-pinterest-clone.md | 2 +- .../take-home-projects/build-a-simon-game.md | 2 +- .../manage-a-book-trading-club.md | 2 +- .../p2p-video-chat-application.md | 2 +- .../deep-learning-demystified.md | 12 +- .../how-convolutional-neural-networks-work.md | 10 +- .../how-deep-neural-networks-work.md | 10 +- ...rks-rnn-and-long-short-term-memory-lstm.md | 10 +- .../book-recommendation-engine-using-knn.md | 15 +- .../cat-and-dog-image-classifier.md | 13 +- ...near-regression-health-costs-calculator.md | 15 +- .../neural-network-sms-text-classifier.md | 13 +- .../rock-paper-scissors.md | 13 +- .../tensorflow/conclusion.md | 10 +- ...al-neural-networks-evaluating-the-model.md | 10 +- ...ral-networks-picking-a-pretrained-model.md | 4 +- ...neural-networks-the-convolutional-layer.md | 10 +- .../convolutional-neural-networks.md | 10 +- ...-learning-algorithms-building-the-model.md | 4 +- ...core-learning-algorithms-classification.md | 10 +- .../core-learning-algorithms-clustering.md | 14 +- ...earning-algorithms-hidden-markov-models.md | 10 +- ...earning-algorithms-the-training-process.md | 10 +- ...ng-algorithms-training-and-testing-data.md | 10 +- ...using-probabilities-to-make-predictions.md | 4 +- ...e-learning-algorithms-working-with-data.md | 10 +- .../tensorflow/core-learning-algorithms.md | 14 +- ...creating-a-convolutional-neural-network.md | 4 +- ...roduction-machine-learning-fundamentals.md | 10 +- .../tensorflow/introduction-to-tensorflow.md | 12 +- ...processing-with-rnns-building-the-model.md | 4 +- ...ssing-with-rnns-create-a-play-generator.md | 6 +- ...processing-with-rnns-making-predictions.md | 10 +- ...al-language-processing-with-rnns-part-2.md | 10 +- ...ing-with-rnns-recurring-neural-networks.md | 12 +- ...ocessing-with-rnns-sentimental-analysis.md | 4 +- ...processing-with-rnns-training-the-model.md | 4 +- .../natural-language-processing-with-rnns.md | 10 +- .../neural-networks-activation-functions.md | 8 +- .../neural-networks-creating-a-model.md | 4 +- .../tensorflow/neural-networks-optimizers.md | 10 +- .../neural-networks-with-tensorflow.md | 10 +- ...cement-learning-with-q-learning-example.md | 4 +- ...rcement-learning-with-q-learning-part-2.md | 8 +- .../reinforcement-learning-with-q-learning.md | 10 +- .../apis-and-microservices-certificate.yml | 12 +- .../data-analysis-with-python-certificate.yml | 12 +- .../data-visualization-certificate.yml | 12 +- .../front-end-libraries-certificate.yml | 12 +- .../information-security-certificate.yml | 12 +- ...rithms-and-data-structures-certificate.yml | 12 +- .../legacy-back-end-certificate.yml | 22 +- .../legacy-data-visualization-certificate.yml | 22 +- .../legacy-front-end-certificate.yml | 22 +- .../legacy-full-stack-certificate.yml | 14 +- ...rity-and-quality-assurance-certificate.yml | 12 +- ...chine-learning-with-python-certificate.yml | 12 +- .../quality-assurance-certificate.yml | 12 +- .../relational-databases-certificate.yml | 21 ++ ...ific-computing-with-python-certificate.yml | 12 +- .../celestial-bodies-database.md | 18 ++ .../learn-relational-databases/final-boss.md | 18 ++ .../learn-advanced-bash-by-building.md | 18 ++ ...-and-sql-by-building-a-bike-rental-shop.md | 17 ++ .../learn-bash-by-building-a-boilerplate.md | 18 ++ ...ash-scripting-by-building-five-programs.md | 18 ++ ...git-by-building-an-sql-reference-object.md | 18 ++ ...building-a-list-of-inspirational-quotes.md | 18 ++ .../learn-nano-by-building-a-castle.md | 18 ++ ...-databases-by-building-a-mario-database.md | 18 ++ ...earn-sql-by-building-a-student-database.md | 18 ++ .../periodic-table-database.md | 18 ++ .../salon-appointment-scheduler.md | 18 ++ .../world-cup-database.md | 18 ++ .../react/create-a-controlled-form.md | 2 +- .../react/introducing-inline-styles.md | 2 +- .../react/pass-a-callback-as-props.md | 2 +- ...state-in-the-user-interface-another-way.md | 2 +- .../use-body-parser-to-parse-post-requests.md | 8 +- ...nt-the-serialization-of-a-passport-user.md | 16 +- ...ementation-of-social-authentication-iii.md | 12 +- .../serialization-of-a-user-object.md | 20 +- ...ality-with-.deepequal-and-.notdeepequal.md | 14 +- .../compare-the-properties-of-two-elements.md | 16 +- ...sponse-using-chai-http-iii---put-method.md | 28 +-- ...ional-tests-using-a-headless-browser-ii.md | 32 +-- .../test-if-a-value-is-an-array.md | 12 +- .../test-if-an-object-has-a-property.md | 16 +- ...-object-is-an-instance-of-a-constructor.md | 18 +- .../use-assert.isok-and-assert.isnotok.md | 18 +- ...se-regular-expressions-to-test-a-string.md | 14 +- .../american-british-translator.md | 110 ++++----- ...f-an-array-using-concat-instead-of-push.md | 22 +- ...ramming-to-convert-strings-to-url-slugs.md | 28 +-- ...de-effects-using-functional-programming.md | 22 +- ...ray-into-a-string-using-the-join-method.md | 22 +- ...bine-two-arrays-using-the-concat-method.md | 16 +- .../implement-map-on-a-prototype.md | 14 +- ...lement-the-filter-method-on-a-prototype.md | 10 +- ...ion-to-currying-and-partial-application.md | 24 +- .../learn-about-functional-programming.md | 20 +- ...avoid-external-dependence-in-a-function.md | 24 +- ...actor-global-variables-out-of-functions.md | 22 +- ...-an-array-using-slice-instead-of-splice.md | 20 +- ...ray-without-changing-the-original-array.md | 20 +- ...part-of-an-array-using-the-slice-method.md | 20 +- ...ay-alphabetically-using-the-sort-method.md | 22 +- ...ng-into-an-array-using-the-split-method.md | 20 +- ...tand-functional-programming-terminology.md | 28 +-- ...nd-the-hazards-of-using-imperative-code.md | 24 +- ...er-or-reduce-to-solve-a-complex-problem.md | 20 +- ...ry-element-in-an-array-meets-a-criteria.md | 18 +- ...er-method-to-extract-data-from-an-array.md | 22 +- ...ap-method-to-extract-data-from-an-array.md | 28 +-- .../use-the-reduce-method-to-analyze-data.md | 30 +-- ...ny-elements-in-an-array-meet-a-criteria.md | 18 +- .../arguments-optional.md | 24 +- .../binary-agents.md | 10 +- .../convert-html-entities.md | 18 +- .../diff-two-arrays.md | 36 +-- .../dna-pairing.md | 18 +- .../drop-it.md | 18 +- .../everything-be-true.md | 28 +-- .../make-a-person.md | 30 +-- .../map-the-debris.md | 16 +- .../missing-letters.md | 16 +- .../pig-latin.md | 22 +- .../search-and-replace.md | 24 +- .../seek-and-destroy.md | 18 +- .../smallest-common-multiple.md | 20 +- .../sorted-union.md | 16 +- .../spinal-tap-case.md | 14 +- .../steamroller.md | 14 +- .../sum-all-numbers-in-a-range.md | 16 +- .../sum-all-odd-fibonacci-numbers.md | 20 +- .../sum-all-primes.md | 12 +- .../wherefore-art-thou.md | 18 +- .../caesars-cipher.md | 18 +- .../cash-register.md | 30 +-- .../palindrome-checker.md | 38 +-- .../roman-numeral-converter.md | 58 ++--- .../telephone-number-validator.md | 64 ++--- .../add-methods-after-inheritance.md | 28 +-- .../change-the-prototype-to-a-new-object.md | 18 +- .../create-a-basic-javascript-object.md | 20 +- .../create-a-method-on-an-object.md | 14 +- .../define-a-constructor-function.md | 18 +- ...xtend-constructors-to-receive-arguments.md | 20 +- .../inherit-behaviors-from-a-supertype.md | 26 +- .../iterate-over-all-properties.md | 16 +- ...ode-more-reusable-with-the-this-keyword.md | 16 +- .../override-inherited-methods.md | 24 +- ...or-property-when-changing-the-prototype.md | 12 +- ...reset-an-inherited-constructor-property.md | 18 +- ...-prototype-to-an-instance-of-the-parent.md | 14 +- .../understand-own-properties.md | 16 +- .../understand-the-constructor-property.md | 18 +- ...iately-invoked-function-expression-iife.md | 14 +- .../understand-the-prototype-chain.md | 14 +- ...d-where-an-objects-prototype-comes-from.md | 12 +- .../use-a-constructor-to-create-objects.md | 16 +- ...mmon-behavior-between-unrelated-objects.md | 22 +- .../use-an-iife-to-create-a-module.md | 16 +- ...n-object-from-being-modified-externally.md | 18 +- ...n-to-access-the-properties-of-an-object.md | 12 +- ...inheritance-so-you-dont-repeat-yourself.md | 18 +- ...ype-properties-to-reduce-duplicate-code.md | 20 +- ...-an-objects-constructor-with-instanceof.md | 16 +- .../check-for-all-or-none.md | 20 +- .../check-for-mixed-grouping-of-characters.md | 26 +- .../regular-expressions/extract-matches.md | 20 +- .../find-characters-with-lazy-matching.md | 20 +- .../find-more-than-the-first-match.md | 24 +- .../find-one-or-more-criminals-in-a-hunt.md | 26 +- .../ignore-case-while-matching.md | 30 +-- ...ral-string-with-different-possibilities.md | 26 +- .../match-all-letters-and-numbers.md | 24 +- .../match-all-non-numbers.md | 24 +- .../regular-expressions/match-all-numbers.md | 24 +- .../match-anything-with-wildcard-period.md | 30 +-- .../match-beginning-string-patterns.md | 18 +- ...characters-that-occur-one-or-more-times.md | 18 +- ...haracters-that-occur-zero-or-more-times.md | 22 +- .../match-ending-string-patterns.md | 16 +- ...atch-everything-but-letters-and-numbers.md | 22 +- .../match-letters-of-the-alphabet.md | 20 +- .../match-literal-strings.md | 20 +- .../match-non-whitespace-characters.md | 20 +- ...tch-numbers-and-letters-of-the-alphabet.md | 16 +- ...e-character-with-multiple-possibilities.md | 24 +- .../match-single-characters-not-specified.md | 16 +- .../regular-expressions/match-whitespace.md | 20 +- .../positive-and-negative-lookahead.md | 36 +-- .../remove-whitespace-from-start-and-end.md | 14 +- .../restrict-possible-usernames.md | 42 ++-- .../reuse-patterns-using-capture-groups.md | 34 +-- .../specify-exact-number-of-matches.md | 24 +- ...pecify-only-the-lower-number-of-matches.md | 26 +- ...ecify-upper-and-lower-number-of-matches.md | 26 +- ...se-capture-groups-to-search-and-replace.md | 24 +- .../using-the-test-method.md | 16 +- ...dd-elements-within-your-bootstrap-wells.md | 6 +- ...ont-awesome-icons-to-all-of-our-buttons.md | 14 +- .../add-font-awesome-icons-to-our-buttons.md | 22 +- ...add-id-attributes-to-bootstrap-elements.md | 16 +- ...pply-the-default-bootstrap-button-style.md | 10 +- ...call-out-optional-actions-with-btn-info.md | 16 +- .../bootstrap/center-text-with-bootstrap.md | 10 +- ...create-a-block-element-bootstrap-button.md | 20 +- .../bootstrap/create-a-bootstrap-button.md | 12 +- .../bootstrap/create-a-bootstrap-headline.md | 20 +- .../bootstrap/create-a-bootstrap-row.md | 14 +- ...a-class-to-target-with-jquery-selectors.md | 8 +- .../bootstrap/create-a-custom-heading.md | 18 +- .../bootstrap/create-bootstrap-wells.md | 12 +- .../ditch-custom-css-for-bootstrap.md | 22 +- .../give-each-element-a-unique-id.md | 20 +- ...-within-a-bootstrap-container-fluid-div.md | 12 +- .../bootstrap/label-bootstrap-buttons.md | 18 +- .../bootstrap/label-bootstrap-wells.md | 16 +- ...rm-elements-responsively-with-bootstrap.md | 16 +- .../make-images-mobile-responsive.md | 18 +- .../responsively-style-checkboxes.md | 12 +- .../responsively-style-radio-buttons.md | 14 +- .../bootstrap/split-your-bootstrap-row.md | 10 +- .../style-text-inputs-as-form-controls.md | 16 +- ...aste-the-bootstrap-button-color-rainbow.md | 14 +- .../use-a-span-to-target-inline-elements.md | 24 +- .../bootstrap/use-comments-to-clarify-code.md | 18 +- ...-design-with-bootstrap-fluid-containers.md | 20 +- ...strap-grid-to-put-elements-side-by-side.md | 22 +- ...s-of-a-dangerous-action-with-btn-danger.md | 16 +- .../build-a-25-5-clock.md | 68 +++--- .../build-a-drum-machine.md | 26 +- .../build-a-javascript-calculator.md | 50 ++-- .../build-a-markdown-previewer.md | 26 +- .../build-a-random-quote-machine.md | 36 +-- ...nge-text-inside-an-element-using-jquery.md | 26 +- ...ange-the-css-of-an-element-using-jquery.md | 18 +- .../jquery/clone-an-element-using-jquery.md | 18 +- .../jquery/delete-your-jquery-functions.md | 16 +- .../jquery/disable-an-element-using-jquery.md | 18 +- ...how-script-tags-and-document-ready-work.md | 22 +- .../jquery/remove-an-element-using-jquery.md | 12 +- ...ove-classes-from-an-element-with-jquery.md | 14 +- ...ecific-child-of-an-element-using-jquery.md | 20 +- .../target-elements-by-class-using-jquery.md | 18 +- .../target-elements-by-id-using-jquery.md | 18 +- .../target-even-elements-using-jquery.md | 16 +- ...ml-elements-with-selectors-using-jquery.md | 18 +- ...the-children-of-an-element-using-jquery.md | 16 +- ...t-the-parent-of-an-element-using-jquery.md | 20 +- ...-element-with-multiple-jquery-selectors.md | 28 +-- ...e-appendto-to-move-elements-with-jquery.md | 16 +- .../use-jquery-to-modify-the-entire-page.md | 12 +- 429 files changed, 7502 insertions(+), 4006 deletions(-) create mode 100644 curriculum/challenges/chinese-traditional/12-certificates/relational-databases-certificate/relational-databases-certificate.yml create mode 100644 curriculum/challenges/chinese-traditional/13-relational-databases/learn-relational-databases/celestial-bodies-database.md create mode 100644 curriculum/challenges/chinese-traditional/13-relational-databases/learn-relational-databases/final-boss.md create mode 100644 curriculum/challenges/chinese-traditional/13-relational-databases/learn-relational-databases/learn-advanced-bash-by-building.md create mode 100644 curriculum/challenges/chinese-traditional/13-relational-databases/learn-relational-databases/learn-bash-and-sql-by-building-a-bike-rental-shop.md create mode 100644 curriculum/challenges/chinese-traditional/13-relational-databases/learn-relational-databases/learn-bash-by-building-a-boilerplate.md create mode 100644 curriculum/challenges/chinese-traditional/13-relational-databases/learn-relational-databases/learn-bash-scripting-by-building-five-programs.md create mode 100644 curriculum/challenges/chinese-traditional/13-relational-databases/learn-relational-databases/learn-git-by-building-an-sql-reference-object.md create mode 100644 curriculum/challenges/chinese-traditional/13-relational-databases/learn-relational-databases/learn-github-by-building-a-list-of-inspirational-quotes.md create mode 100644 curriculum/challenges/chinese-traditional/13-relational-databases/learn-relational-databases/learn-nano-by-building-a-castle.md create mode 100644 curriculum/challenges/chinese-traditional/13-relational-databases/learn-relational-databases/learn-relational-databases-by-building-a-mario-database.md create mode 100644 curriculum/challenges/chinese-traditional/13-relational-databases/learn-relational-databases/learn-sql-by-building-a-student-database.md create mode 100644 curriculum/challenges/chinese-traditional/13-relational-databases/learn-relational-databases/periodic-table-database.md create mode 100644 curriculum/challenges/chinese-traditional/13-relational-databases/learn-relational-databases/salon-appointment-scheduler.md create mode 100644 curriculum/challenges/chinese-traditional/13-relational-databases/learn-relational-databases/world-cup-database.md diff --git a/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/create-decimal-numbers-with-javascript.md b/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/create-decimal-numbers-with-javascript.md index 12401069db..df7e68bc57 100644 --- a/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/create-decimal-numbers-with-javascript.md +++ b/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/create-decimal-numbers-with-javascript.md @@ -11,7 +11,7 @@ dashedName: create-decimal-numbers-with-javascript 我們也可以把小數存儲到變量中。 小數有時候也被稱作浮點數或者 floats。 -**提示:** 不是所有的實數都可以用浮點數(floating point)來表示。 因爲可能產生四捨五入的錯誤, [查看詳情](https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems)。 +**提示:** 不是所有的實數都可以用浮點數(floating point)來表示。 因爲可能產生四捨五入的錯誤, [點擊這裏瞭解細節](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems)。 # --instructions-- diff --git a/curriculum/challenges/chinese-traditional/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.md b/curriculum/challenges/chinese-traditional/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.md index 8d95a92dbc..aa26cf4134 100644 --- a/curriculum/challenges/chinese-traditional/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.md +++ b/curriculum/challenges/chinese-traditional/05-apis-and-microservices/basic-node-and-express/use-body-parser-to-parse-post-requests.md @@ -26,13 +26,15 @@ name=John+Doe&age=25 # --instructions-- -在 `package.json` 中安裝 `body-parser` 模塊, 然後在文件頂部 `require` 進來, 用變量 `bodyParser` 保存它。 通過中間件的 `bodyParser.urlencoded({extended: false})` 方法處理 URL 編碼數據, 將調用上個方法返回的函數傳給 `app.use()`, 中間件通常掛載在所有需要它的路由之前。 +在 `package.json` 中安裝 `body-parser` 模塊, 然後在文件頂部 `require` 進來, 用變量 `bodyParser` 保存它。 通過中間件的 `bodyParser.urlencoded({extended: false})` 方法處理 URL 編碼數據, Pass the function returned by the previous method call to `app.use()`. As usual, the middleware must be mounted before all the routes that depend on it. -**注意:**`extended=false` 是一個告訴解析器使用經典編碼的配置選項, 當使用它時,值只能是字符串或者數組, 拓展版本數據更加靈活,但稍遜於 JSON。 +**Note:** `extended` is a configuration option that tells `body-parser` which parsing needs to be used. When `extended=false` it uses the classic encoding `querystring` library. When `extended=true` it uses `qs` library for parsing. + +When using `extended=false`, values can be only strings or arrays. The object returned when using `querystring` does not prototypically inherit from the default JavaScript `Object`, which means functions like `hasOwnProperty`, `toString` will not be available. The extended version allows more data flexibility, but it is outmatched by JSON. # --hints-- -應該掛載“body-parser”中間件 +The 'body-parser' middleware should be mounted ```js (getUserInput) => diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-analysis-example-a.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-analysis-example-a.md index 9a24560aa9..ef6dabf07f 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-analysis-example-a.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-analysis-example-a.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c14d -title: Data Analysis Example A +title: 數據分析 案例 A challengeType: 11 videoId: nVAaxZ34khk dashedName: data-analysis-example-a @@ -8,34 +8,34 @@ dashedName: data-analysis-example-a # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +更多資料: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/FreeCodeCamp-Pandas-Real-Life-Example) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/FreeCodeCamp-Pandas-Real-Life-Example) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What does the shape of our dataframe tell us? +數據框架的形狀表示了什麼意義?從中我們又能夠了解到什麼? ## --answers-- -The size in gigabytes the dataframe we loaded into memory is. +我們加載到內存中的數據幀大小爲千兆字節。 --- -How many rows and columns our dataframe has. +我們的數據框架有多少行和多少列? --- -How many rows the source data had before loading. +在加載數據前,源數據中有多少行? --- -How many columns the source data had before loading. +在加載數據前,源數據中有多少列? ## --video-solution-- diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-analysis-example-b.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-analysis-example-b.md index 3c5b57866a..d8df41fe7e 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-analysis-example-b.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-analysis-example-b.md @@ -8,7 +8,7 @@ dashedName: data-analysis-example-b # --description-- -*您可以使用 Google Colab,而不是像視頻中顯示的那樣使用 notebooks.ai。* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* 更多資源: diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-and-visualizations.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-and-visualizations.md index 13cd90fb08..67612d0ad2 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-and-visualizations.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-and-visualizations.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c160 -title: Data Cleaning and Visualizations +title: 數據清理和可視化 challengeType: 11 videoId: mHjxzFS5_Z0 dashedName: data-cleaning-and-visualizations @@ -8,18 +8,18 @@ dashedName: data-cleaning-and-visualizations # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +更多資源: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/data-cleaning-rmotr-freecodecamp) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/data-cleaning-rmotr-freecodecamp) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -When using Matplotlib's global API, what does the order of numbers mean here? +當使用 Matplotlib 的全局 API 時,數字的順序在這裏意味着什麼? ```py plt.subplot(1, 2, 1) @@ -27,15 +27,15 @@ plt.subplot(1, 2, 1) ## --answers-- -My figure will have one column, two rows, and I am going to start drawing in the first (left) plot. +這裏將創建一個圖像包括一列、兩行,並且我將開始在第一個圖(左)繪圖。 --- -I am going to start drawing in the first (left) plot, my figure will have two rows, and my figure will have one column. +我將開始在第一個圖表(左)繪圖,同時我的圖像將有兩行,也將有一列。 --- -My figure will have one row, two columns, and I am going to start drawing in the first (left) plot. +這裏將創建一個圖像包括一行、兩列,並且我將開始在第一個圖表(左)繪圖。 ## --video-solution-- diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-duplicates.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-duplicates.md index cf159cead1..1f264a2a91 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-duplicates.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-duplicates.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c15f -title: Data Cleaning Duplicates +title: 數據 清理重複項 challengeType: 11 videoId: kj7QqjXhH6A dashedName: data-cleaning-duplicates @@ -8,30 +8,30 @@ dashedName: data-cleaning-duplicates # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +以下有更多的資料: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/data-cleaning-rmotr-freecodecamp) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/data-cleaning-rmotr-freecodecamp) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -The Python method `.duplicated()` returns a boolean Series for your DataFrame. `True` is the return value for rows that: +Python 方法 `.duplicated()` 將針對你的 DataFrame 返回一個儲存着布爾值的 Series。 `True` 是行的返回值: ## --answers-- -contain a duplicate, where the value for the row contains the first occurrence of that value. +包含一個重複值,並且它表示了在這一行這一重複值第一次出現。 --- -contain a duplicate, where the value for the row is at least the second occurrence of that value. +包含一個重複值,並且它表示了在這一行這一重複值至少第二次出現。 --- -contain a duplicate, where the value for the row contains either the first or second occurrence. +包含一個重複值,並且它表示了在這一行這一重複值第一次或第二次出現。 ## --video-solution-- diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-introduction.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-introduction.md index 496e66d910..2489fa2846 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-introduction.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-introduction.md @@ -8,7 +8,7 @@ dashedName: data-cleaning-introduction # --description-- -*您可以使用 Google Colab,而不是像視頻中顯示的那樣使用 notebooks.ai。* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* 以下有更多的資料: diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-with-dataframes.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-with-dataframes.md index 887af41702..e812e9b46f 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-with-dataframes.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/data-cleaning-with-dataframes.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c15e -title: Data Cleaning with DataFrames +title: DataFrames 中的數據清理 challengeType: 11 videoId: sTMN_pdI6S0 dashedName: data-cleaning-with-dataframes @@ -8,18 +8,18 @@ dashedName: data-cleaning-with-dataframes # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +以下有更多的資料: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/data-cleaning-rmotr-freecodecamp) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/data-cleaning-rmotr-freecodecamp) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What will the following code print out? +以下代碼會打印出什麼? ```py import pandas as pd diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/how-to-use-jupyter-notebooks-intro.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/how-to-use-jupyter-notebooks-intro.md index 4ac7363d87..17a7ce1cab 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/how-to-use-jupyter-notebooks-intro.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/how-to-use-jupyter-notebooks-intro.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c14f -title: How to use Jupyter Notebooks Intro +title: 如何使用 Jupyter Notebook challengeType: 11 videoId: h8caJq2Bb9w dashedName: how-to-use-jupyter-notebooks-intro @@ -8,19 +8,18 @@ dashedName: how-to-use-jupyter-notebooks-intro # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +更多資源: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/ds-content-interactive-jupyterlab-tutorial) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) -- [Twitter Cheat Sheet](https://twitter.com/rmotr_com/status/1122176794696847361) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/ds-content-interactive-jupyterlab-tutorial) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What is **not** allowed in a Jupyter Notebook's cell? +以下哪個是 Jupyter Notebook 單元格中**不**允許的? ## --answers-- @@ -28,11 +27,11 @@ Markdown --- -Python code +Python 代碼 --- -An Excel sheet +Excel 工作表 ## --video-solution-- diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/introduction-to-data-analysis.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/introduction-to-data-analysis.md index a092ad93a8..f9bbcf469a 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/introduction-to-data-analysis.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/introduction-to-data-analysis.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c14c -title: Introduction to Data Analysis +title: 數據分析簡介 challengeType: 11 videoId: VJrP2FUzKP0 dashedName: introduction-to-data-analysis @@ -8,33 +8,32 @@ dashedName: introduction-to-data-analysis # --description-- -More resources: +以下有更多的資料: -\- [Slides](https://docs.google.com/presentation/d/1fDpjlyMiOMJyuc7_jMekcYLPP2XlSl1eWw9F7yE7byk) +\- [幻燈片](https://docs.google.com/presentation/d/1cUIt8b2ySz-85_ykfeuuWsurccwTAuFPn782pZBzFsU/edit?usp=sharing) # --question-- ## --text-- -Why should you choose R over Python for data analysis? +以下哪一項 **不是** 數據分析的一部分? ## --answers-- -It's simple to learn. +建立統計模型和數據可視化。 --- -It's better at dealing with advanced statistical methods. +爲分析選擇所需的結論。 --- -There are many powerful libraries that support R. +修復不正確的值並刪除無效數據。 --- -It's free and open source. +將數據轉換爲適當的數據結構。 ## --video-solution-- 2 - diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/jupyter-notebooks-cells.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/jupyter-notebooks-cells.md index 137b9f53bd..f5913da1bb 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/jupyter-notebooks-cells.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/jupyter-notebooks-cells.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c150 -title: Jupyter Notebooks Cells +title: Jupyter Notebooks 單元格 challengeType: 11 videoId: 5PPegAs9aLA dashedName: jupyter-notebooks-cells @@ -8,31 +8,30 @@ dashedName: jupyter-notebooks-cells # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +更多資源: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/ds-content-interactive-jupyterlab-tutorial) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) -- [Twitter Cheat Sheet](https://twitter.com/rmotr_com/status/1122176794696847361) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/ds-content-interactive-jupyterlab-tutorial) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What are the three main types of Jupyter Notebook Cell? +Jupyter Notebook 單元格支持的三種主要類型是什麼? ## --answers-- -Code, Markdown, and Python +Code、Markdown 和 Python --- -Code, Markdown, and Raw +Code、Markdown 和 Raw --- -Markdown, Python, and Raw +Markdown、Python 和 Raw ## --video-solution-- diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/jupyter-notebooks-importing-and-exporting-data.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/jupyter-notebooks-importing-and-exporting-data.md index 104edcae19..0ddb58592c 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/jupyter-notebooks-importing-and-exporting-data.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/jupyter-notebooks-importing-and-exporting-data.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c151 -title: Jupyter Notebooks Importing and Exporting Data +title: 在 Jupyter Notebooks 中導入和導出數據 challengeType: 11 videoId: k1msxD3JIxE dashedName: jupyter-notebooks-importing-and-exporting-data @@ -8,39 +8,38 @@ dashedName: jupyter-notebooks-importing-and-exporting-data # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +更多資源: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/ds-content-interactive-jupyterlab-tutorial) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) -- [Twitter Cheat Sheet](https://twitter.com/rmotr_com/status/1122176794696847361) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/ds-content-interactive-jupyterlab-tutorial) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What kind of data can you import and work with in a Jupyter Notebook? +你可以在 Jupyter Notebook 中導入和使用什麼樣的數據? ## --answers-- -Excel files. +Excel 文件。 --- -CSV files. +CSV 文件。 --- -XML files. +XML 文件 --- -Data from an API. +來自 API 的數據 --- -All of the above. +以上全部內容 ## --video-solution-- diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-algebra-and-size.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-algebra-and-size.md index 454f7c5646..5e097f7477 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-algebra-and-size.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-algebra-and-size.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c157 -title: Numpy Algebra and Size +title: Numpy 代數和大小 challengeType: 11 videoId: XAT97YLOKD8 dashedName: numpy-algebra-and-size @@ -8,34 +8,34 @@ dashedName: numpy-algebra-and-size # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +以下有更多的資料: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What is the relationship between size of objects (such as lists and datatypes) in memory in Python's standard library and the NumPy library? Knowing this, what are the implications for performance? +內存中,對象的大小(例如列表和數據類型)在 Python 標準庫和 NumPy 庫之間有什麼關係? 知道這一點,對性能有何影響? ## --answers-- -Standard Python objects take up much more memory to store than NumPy objects; operations on comparable standard Python and NumPy objects complete in roughly the same time. +標準的 Python 對象佔用了比 NumPy 對象更多的內存;標準的 Python 和 NumPy 對象完成的操作時間是大致相同的。 --- -NumPy objects take up much more memory than standard Python objects; operations on NumPy objects complete very quickly compared to comparable objects in standard Python. +Numpy 對象比標準的 Python 對象佔用更多的內存;Numpy 的對象相比較標準的 Python 更快地完成操作。 --- -NumPy objects take up much less memory than Standard Python objects; operations on Standard Python objects complete very quickly compared to comparable objects on NumPy Object. +Numpy 對象比標準的 Python 對象佔用更少的內存;標準 Python 的對象相比較 Numpy 的對象更快地完成操作。 --- -Standard Python objects take up more memory than NumPy objects; operations on NumPy objects complete very quickly compared to comparable objects in standard Python. +標準 Python 的對象比 Numpy 的對象佔用更多的內存;Numpy 的對象相比較標準 Python 的對象更快地完成操作。 ## --video-solution-- diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-arrays.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-arrays.md index b5504e836e..61b5a1bdbf 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-arrays.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-arrays.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c154 -title: Numpy Arrays +title: Numpy 數組 challengeType: 11 videoId: VDYVFHBL1AM dashedName: numpy-arrays @@ -8,18 +8,18 @@ dashedName: numpy-arrays # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +以下有更多的資料: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What will the following code print out? +以下代碼會打印出什麼? ```py A = np.array([ diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-boolean-arrays.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-boolean-arrays.md index f271dff4b0..10b2d94db6 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-boolean-arrays.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-boolean-arrays.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c156 -title: Numpy Boolean Arrays +title: Numpy 布爾值的數組 challengeType: 11 videoId: N1ttsMmcVMM dashedName: numpy-boolean-arrays @@ -8,18 +8,18 @@ dashedName: numpy-boolean-arrays # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +以下有更多的資料: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What will the following code print out? +以下代碼會打印出什麼? ```py a = np.arange(5) diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-a.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-a.md index fc38697f40..83aa6ffe5b 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-a.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-a.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c152 -title: Numpy Introduction A +title: Numpy 簡介 A challengeType: 11 videoId: P-JjV6GBCmk dashedName: numpy-introduction-a @@ -8,30 +8,30 @@ dashedName: numpy-introduction-a # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +以下有更多的資料: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -Why is Numpy an important, but unpopular Python library? +爲什麼 Numpy 是一個重要的卻又不流行的 Python 庫? ## --answers-- -Often you won't work directly with Numpy. +你常常不會直接使用 Numpy。 --- -It is extremely slow. +它是極其緩慢的。 --- -Working with Numpy is difficult. +使用 Numpy 的難度是很大的。 ## --video-solution-- diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-b.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-b.md index a863e42074..4fd546bb88 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-b.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-b.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c153 -title: Numpy Introduction B +title: Numpy 簡介 B challengeType: 11 videoId: YIqgrNLAZkA dashedName: numpy-introduction-b @@ -8,34 +8,34 @@ dashedName: numpy-introduction-b # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +以下有更多的資料: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -About how much memory does the integer `5` consume in plain Python? +整數 `5` 在 Python 中消耗多少內存? ## --answers-- -32 bits +32 位 --- -20 bytes +20 字節 --- -16 bytes +16 字節 --- -8 bits +8 位 ## --video-solution-- diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-operations.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-operations.md index 0072c84019..21977e203c 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-operations.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/numpy-operations.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c155 -title: Numpy Operations +title: Numpy 的運算 challengeType: 11 videoId: eqSVcJbaPdk dashedName: numpy-operations @@ -8,18 +8,18 @@ dashedName: numpy-operations # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +更多資源: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What is the value of `a` after you run the following code? +運行以下代碼後, `a` 的值是多少? ```py a = np.arange(5) diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-conditional-selection-and-modifying-dataframes.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-conditional-selection-and-modifying-dataframes.md index 3d17a73a55..9c9aa1ab62 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-conditional-selection-and-modifying-dataframes.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-conditional-selection-and-modifying-dataframes.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c15b -title: Pandas Conditional Selection and Modifying DataFrames +title: Pandas 條件選擇和 DataFrames 的修改 challengeType: 11 videoId: BFlH0fN5xRQ dashedName: pandas-conditional-selection-and-modifying-dataframes @@ -8,18 +8,18 @@ dashedName: pandas-conditional-selection-and-modifying-dataframes # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +以下有更多的資料: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What will the following code print out? +以下代碼會打印出什麼? ```py import pandas as pd diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-creating-columns.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-creating-columns.md index 7d20f76c4a..c5c94681c9 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-creating-columns.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-creating-columns.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c15c -title: Pandas Creating Columns +title: Pandas 創建列 challengeType: 11 videoId: _sSo2XZoB3E dashedName: pandas-creating-columns @@ -8,18 +8,18 @@ dashedName: pandas-creating-columns # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。* -More resources: +以下有更多的資料: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas) +- [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What code would add a "Certificates per month" column to the `certificates_earned` DataFrame like the one below? +哪段代碼可以向 DataFrame `certificates_earned` 中添加一個 “Certificates per month” 列,就像下面所展示的?
      Certificates  Time (in months)  Certificates per month
 Tom               8                16                    0.50
diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-dataframes.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-dataframes.md
index fd5eedb176..b07b97188c 100644
--- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-dataframes.md
+++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-dataframes.md
@@ -8,18 +8,18 @@ dashedName: pandas-dataframes
 
 # --description--
 
-*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.*
+*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。*
 
-More resources:
+以下有更多的資料:
 
--   [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas)
--   [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
+-   [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas)
+-   [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
 
 # --question--
 
 ## --text--
 
-What will the following code print out?
+以下代碼會打印出什麼?
 
 ```py
 import pandas as pd
diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-indexing-and-conditional-selection.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-indexing-and-conditional-selection.md
index 1107f217f4..d5c63c63bb 100644
--- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-indexing-and-conditional-selection.md
+++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-indexing-and-conditional-selection.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a093a74c4063ca6f7c159
-title: Pandas Indexing and Conditional Selection
+title: Pandas 索引和條件選擇
 challengeType: 11
 videoId: '-ZOrgV_aA9A'
 dashedName: pandas-indexing-and-conditional-selection
@@ -8,18 +8,18 @@ dashedName: pandas-indexing-and-conditional-selection
 
 # --description--
 
-*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.*
+*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。*
 
-More resources:
+以下有更多的資料:
 
--   [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas)
--   [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
+-   [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas)
+-   [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
 
 # --question--
 
 ## --text--
 
-What will the following code print out?
+以下代碼會打印出什麼?
 
 ```py
 import pandas as pd
diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-introduction.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-introduction.md
index 45a30bc050..67cff2367d 100644
--- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-introduction.md
+++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/pandas-introduction.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a093a74c4063ca6f7c158
-title: Pandas Introduction
+title: Pandas 簡介
 challengeType: 11
 videoId: 0xACW-8cZU0
 dashedName: pandas-introduction
@@ -8,18 +8,18 @@ dashedName: pandas-introduction
 
 # --description--
 
-*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.*
+*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。*
 
-More resources:
+以下有更多的資料:
 
--   [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas)
--   [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
+-   [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas)
+-   [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
 
 # --question--
 
 ## --text--
 
-What will the following code print out?
+以下代碼會打印出什麼?
 
 ```py
 import pandas as pd
diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/parsing-html-and-saving-data.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/parsing-html-and-saving-data.md
index 284a5eabab..0c2b38b7d1 100644
--- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/parsing-html-and-saving-data.md
+++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/parsing-html-and-saving-data.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a093a74c4063ca6f7c164
-title: Parsing HTML and Saving Data
+title: 解析 HTML 和保存數據
 challengeType: 11
 videoId: bJaqnTWQmb0
 dashedName: parsing-html-and-saving-data
@@ -8,18 +8,18 @@ dashedName: parsing-html-and-saving-data
 
 # --description--
 
-*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.*
+*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。*
 
-More resources:
+更多資源:
 
--   [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/RDP-Reading-Data-with-Python-and-Pandas)
--   [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
+-   [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/RDP-Reading-Data-with-Python-and-Pandas/tree/master/unit-1-reading-data-with-python-and-pandas/lesson-17-reading-html-tables/files)
+-   [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
 
 # --question--
 
 ## --text--
 
-What Python library has the `.read_html()` method we can we use for parsing HTML documents and extracting tables?
+爲了解析 HTML 文本和提取表格,`.read_html()` 位於哪個 Python 的庫?
 
 ## --answers--
 
diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/python-functions-and-collections.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/python-functions-and-collections.md
index 75a9a71e77..5839f5adfd 100644
--- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/python-functions-and-collections.md
+++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/python-functions-and-collections.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a093a74c4063ca6f7c166
-title: Python Functions and Collections
+title: Python 函數和集合
 challengeType: 11
 videoId: NzpU17ZVlUw
 dashedName: python-functions-and-collections
@@ -8,30 +8,30 @@ dashedName: python-functions-and-collections
 
 # --description--
 
-*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.*
+*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。*
 
-More resources:
+更多資源:
 
--   [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/ds-content-python-under-10-minutes)
--   [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
+-   [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/ds-content-python-under-10-minutes)
+-   [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
 
 # --question--
 
 ## --text--
 
-What is the main difference between lists and tuples in Python?
+在 Python 中,列表和元組有什麼主要的區別?
 
 ## --answers--
 
-Tuples are immutable.
+元組是不可改變的。
 
 ---
 
-Lists are ordered.
+列表是有順序的。
 
 ---
 
-Tuples are unordered.
+元組是無序的。
 
 ## --video-solution--
 
diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/python-introduction.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/python-introduction.md
index f67c83c389..3a79987ce3 100644
--- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/python-introduction.md
+++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/python-introduction.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a093a74c4063ca6f7c165
-title: Python Introduction
+title: Python 簡介
 challengeType: 11
 videoId: PrQV9JkLhb4
 dashedName: python-introduction
@@ -8,34 +8,34 @@ dashedName: python-introduction
 
 # --description--
 
-*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.*
+*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。*
 
-More resources:
+更多資源:
 
--   [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/ds-content-python-under-10-minutes)
--   [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
+-   [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/ds-content-python-under-10-minutes)
+-   [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
 
 # --question--
 
 ## --text--
 
-How do we define blocks of code in the body of functions in Python?
+我們如何在 Python 函數中定義代碼塊?
 
 ## --answers--
 
-We use a set of curly braces, one on either side of each new block of our code.
+我們可以在代碼的每個新區塊的兩側使用一組大括號。
 
 ---
 
-We use indentation, usually right-aligned 4 spaces.
+我們使用縮進,通常是右對齊的 4 個空格。
 
 ---
 
-We do not denote blocks of code.
+我們不用指示出代碼塊。
 
 ---
 
-We could use curly braces or indentation to denote blocks of code.
+我們可以使用大括號或縮進來指示出代碼塊。
 
 ## --video-solution--
 
diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/python-iteration-and-modules.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/python-iteration-and-modules.md
index 4d4350768f..03706c919b 100644
--- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/python-iteration-and-modules.md
+++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/python-iteration-and-modules.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a093a74c4063ca6f7c167
-title: Python Iteration and Modules
+title: Python 迭代和模塊
 challengeType: 11
 videoId: XzosGWLafrY
 dashedName: python-iteration-and-modules
@@ -8,18 +8,18 @@ dashedName: python-iteration-and-modules
 
 # --description--
 
-*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.*
+*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。*
 
-More resources:
+更多資源:
 
--   [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/ds-content-python-under-10-minutes)
--   [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
+-   [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/ds-content-python-under-10-minutes)
+-   [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
 
 # --question--
 
 ## --text--
 
-How would you iterate over and print the keys and values of a dictionary named `user`?
+您將如何迭代並打印名爲 `user` 的字典的鍵和值?
 
 ## --answers--
 
diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-csv-and-txt.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-csv-and-txt.md
index 18d6487a0a..0ab7794aeb 100644
--- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-csv-and-txt.md
+++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-csv-and-txt.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a093a74c4063ca6f7c162
-title: Reading Data CSV and TXT
+title: 從 CSV 和 TXT 中讀取數據
 challengeType: 11
 videoId: ViGEv0zOzUk
 dashedName: reading-data-csv-and-txt
@@ -8,18 +8,18 @@ dashedName: reading-data-csv-and-txt
 
 # --description--
 
-*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.*
+*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。*
 
-More resources:
+以下有更多的資料:
 
--   [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/RDP-Reading-Data-with-Python-and-Pandas)
--   [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
+-   [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/RDP-Reading-Data-with-Python-and-Pandas/tree/master/unit-1-reading-data-with-python-and-pandas/lesson-1-reading-csv-and-txt-files/files)
+-   [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
 
 # --question--
 
 ## --text--
 
-How would you import the CSV file `data.csv` and store it in a DataFrame using the Pandas module?
+你如何使用 Pandas 模塊導入 CSV 文件 `data.csv` 並且存儲到 DataFrame 中?
 
 ## --answers--
 
diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-from-databases.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-from-databases.md
index 5502a07e7a..61dce682b0 100644
--- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-from-databases.md
+++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-from-databases.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a093a74c4063ca6f7c163
-title: Reading Data from Databases
+title: 從數據庫中讀取數據
 challengeType: 11
 videoId: MtgXS1MofRw
 dashedName: reading-data-from-databases
@@ -8,30 +8,30 @@ dashedName: reading-data-from-databases
 
 # --description--
 
-*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.*
+*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。*
 
-More resources:
+以下有更多的資料
 
--   [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/RDP-Reading-Data-with-Python-and-Pandas)
--   [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
+-   [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/RDP-Reading-Data-with-Python-and-Pandas/tree/master/unit-1-reading-data-with-python-and-pandas/lesson-11-reading-data-from-relational-databases/files)
+-   [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
 
 # --question--
 
 ## --text--
 
-What method does a `Cursor` instance have and what does it allow?
+`Cursor` 實例中都有什麼方法,這些方法能用來做什麼?
 
 ## --answers--
 
-The `Cursor` instance has a `.run()` method which allows you to run SQL queries.
+`Cursor` 實例中有方法 `.run()` ,它允許你運行 SQL 查詢語句。
 
 ---
 
-The `Cursor` instance has a `.select()` method which allows you to select records.
+`Cursor` 實例中有方法 `.select()` ,它允許你選擇記錄。
 
 ---
 
-The `Cursor` instance has an `.execute()` method which will receive SQL parameters to run against the database.
+`Cursor` 實例有方法 `.execute()` , 它能夠接收在數據庫中運行的 SQL 參數。
 
 ## --video-solution--
 
diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-introduction.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-introduction.md
index a16b2d0176..c3bc1b9eb4 100644
--- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-introduction.md
+++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-introduction.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a093a74c4063ca6f7c161
-title: Reading Data Introduction
+title: 讀取數據簡介
 challengeType: 11
 videoId: cDnt02BcHng
 dashedName: reading-data-introduction
@@ -8,18 +8,18 @@ dashedName: reading-data-introduction
 
 # --description--
 
-*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.*
+*在視頻中我們使用的編輯器工具是在 notebook.ai 這個平臺,你也可以選擇用其他的平臺,比如說 Google Colab 也是一個不錯的選擇。*
 
-More resources:
+以下有更多的資料:
 
--   [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/RDP-Reading-Data-with-Python-and-Pandas)
--   [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
+-   [在 GitHub 平臺的 Notebooks](https://github.com/ine-rmotr-curriculum/RDP-Reading-Data-with-Python-and-Pandas/tree/master/unit-1-reading-data-with-python-and-pandas/lesson-1-reading-csv-and-txt-files/files)
+-   [如何使用 Google Colab 來打開 GitHub 上的 Notebooks](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
 
 # --question--
 
 ## --text--
 
-Given a file named `certificates.csv` with these contents:
+文件 `certificates.csv` 有以下內容:
 
 
 Name$Certificates$Time (in months)
@@ -29,7 +29,7 @@ Ahmad$5$9
 Beau$6$12
 
-Fill in the blanks for the missing arguments below: +請填寫以下缺失的參數: ```py import csv diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/demographic-data-analyzer.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/demographic-data-analyzer.md index 66246f3d5d..4d0c9a677a 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/demographic-data-analyzer.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/demographic-data-analyzer.md @@ -1,23 +1,24 @@ --- id: 5e46f7e5ac417301a38fb929 -title: Demographic Data Analyzer +title: 人口統計數據分析器 challengeType: 10 +forumTopicId: 462367 dashedName: demographic-data-analyzer --- # --description-- -In this challenge you must analyze demographic data using Pandas. You are given a dataset of demographic data that was extracted from the 1994 Census database. +在這個挑戰中,你必須使用 Pandas 對人口統計進行分析。 你將獲得從 1994 年人口普查數據庫中提取的人口統計數據數據集。 -You can access [the full project description and starter code on Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-demographic-data-analyzer). +你可以[在 Replit 上查看整個項目的具體描述和初始代碼](https://replit.com/github/freeCodeCamp/boilerplate-demographic-data-analyzer)。 -After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below. +點擊此鏈接,fork 這個項目。 一旦你根據 “README.md” 中的說明完成項目,請提交你的項目鏈接到下面。 -We are still developing the interactive instructional part of the data analysis with Python curriculum. For now, you will have to use other resources to learn how to pass this challenge. +我們仍在開發 Python 數據分析課程的交互式教學。 現在,你需要使用其他資源來學習如何通過這一挑戰。 # --hints-- -It should pass all Python tests. +它應該通過所有的 Python 測試。 ```js diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md index 4d7cfc2f13..b0d1029027 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/medical-data-visualizer.md @@ -1,23 +1,24 @@ --- id: 5e46f7f8ac417301a38fb92a -title: Medical Data Visualizer +title: 醫療數據可視化工具 challengeType: 10 +forumTopicId: 462368 dashedName: medical-data-visualizer --- # --description-- -In this project, you will visualize and make calculations from medical examination data using matplotlib, seaborn, and pandas. +在這個項目中,你將要使用 matplotlib,seaborn 和 pandas 來對健康檢查數據進行數據可視化和計算。 -You can access [the full project description and starter code on Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-medical-data-visualizer). +你可以[在 Replit 上查看整個項目的具體描述和初始代碼](https://replit.com/github/freeCodeCamp/boilerplate-medical-data-visualizer)。 -After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below. +打開此鏈接後,fork 這個項目。 一旦你根據 “README.md” 中的說明完成項目,請提交你的項目到下面的鏈接。 -We are still developing the interactive instructional part of the data analysis with Python curriculum. For now, you will have to use other resources to learn how to pass this challenge. +我們仍在開發 Python 數據分析課程的交互式課程部分。 現在,你需要使用其他資源來學習如何通過這一挑戰。 # --hints-- -It should pass all Python tests. +它應該通過所有的 Python 測試。 ```js diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/page-view-time-series-visualizer.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/page-view-time-series-visualizer.md index b33d2eeed6..414b111006 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/page-view-time-series-visualizer.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/page-view-time-series-visualizer.md @@ -1,23 +1,24 @@ --- id: 5e46f802ac417301a38fb92b -title: Page View Time Series Visualizer +title: 頁面訪問量的時間序列可視化工具 challengeType: 10 +forumTopicId: 462369 dashedName: page-view-time-series-visualizer --- # --description-- -For this project you will visualize time series data using a line chart, bar chart, and box plots. You will use Pandas, matplotlib, and seaborn to visualize a dataset containing the number of page views each day on the freeCodeCamp.org forum from 2016-05-09 to 2019-12-03. The data visualizations will help you understand the patterns in visits and identify yearly and monthly growth. +對於這個項目,你將使用線圖、條形圖和箱形圖對時間序列數據進行可視化。 你將要使用 Pandas、matplotlib 和 seaborn 來對數據集進行可視化,這個數據集包含從 2016-05-09 到 2019-12-03 每一天在 freeCodeCamp.org 論壇的頁面訪問量。 這個數據可視化將幫助你瞭解訪問的模式,並且顯示年增長和月增長情況。 -You can access [the full project description and starter code on Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-page-view-time-series-visualizer). +你可以 [在 Replit 上查看整個項目的具體描述和初始代碼](https://replit.com/github/freeCodeCamp/boilerplate-page-view-time-series-visualizer)。 -After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below. +點擊此鏈接,fork 這個項目。 一旦你根據 “README.md” 中的說明完成項目,請提交你的項目到下面的鏈接。 -We are still developing the interactive instructional part of the data analysis with Python curriculum. For now, you will have to use other resources to learn how to pass this challenge. +我們仍在開發 Python 數據分析課程的交互式課程部分。 現在,你將需要使用其他資源來學習如何通過這一挑戰。 # --hints-- -It should pass all Python tests. +它應該通過所有的 Python 測試。 ```js diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/sea-level-predictor.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/sea-level-predictor.md index 58075caec0..b2836a4656 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/sea-level-predictor.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/data-analysis-with-python-projects/sea-level-predictor.md @@ -1,23 +1,24 @@ --- id: 5e4f5c4b570f7e3a4949899f -title: Sea Level Predictor +title: 海平面預報器 challengeType: 10 +forumTopicId: 462370 dashedName: sea-level-predictor --- # --description-- -In this project, you will analyze a dataset of the global average sea level change since 1880. You will use the data to predict the sea level change through year 2050. +在本項目中,您將分析自 1880 年以來全球平均海平面變化的數據集。 您將使用這些數據來預測到 2050 年的海平面變化。 -You can access [the full project description and starter code on Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-sea-level-predictor). +你可以在 [Replit 上查看整個項目的具體描述和初始代碼](https://replit.com/github/freeCodeCamp/boilerplate-sea-level-predictor)。 -After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below. +打開此鏈接後,fork 這個項目。 一旦你根據 “README.md” 中的說明完成項目,請提交你的項目到下面的鏈接。 -We are still developing the interactive instructional part of the data analysis with Python curriculum. For now, you will have to use other resources to learn how to pass this challenge. +我們仍在開發 Python 數據分析課程的交互式課程部分。 現在,你需要使用其他資源來學習如何通過這一挑戰。 # --hints-- -It should pass all Python tests. +它應該通過所有的 Python 測試。 ```js diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/accessing-and-changing-elements,-rows,-columns.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/accessing-and-changing-elements,-rows,-columns.md index 3c833be5ad..3e4d45c8ee 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/accessing-and-changing-elements,-rows,-columns.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/accessing-and-changing-elements,-rows,-columns.md @@ -1,6 +1,6 @@ --- id: 5e9a0a8e09c5df3cc3600ed4 -title: 'Accessing and Changing Elements, Rows, Columns' +title: '訪問與更改元素、行和列' challengeType: 11 videoId: v-7Y7koJ_N0 dashedName: accessing-and-changing-elements-rows-columns @@ -10,7 +10,7 @@ dashedName: accessing-and-changing-elements-rows-columns ## --text-- -What code would change the values in the 3rd column of both of the following Numpy arrays to 20? +以下哪行代碼將下面的 Numpy 數組的第三行的數值都更改成 20? ```py a = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/basics-of-numpy.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/basics-of-numpy.md index 57b1924af7..54be13c1bd 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/basics-of-numpy.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/basics-of-numpy.md @@ -1,6 +1,6 @@ --- id: 5e9a0a8e09c5df3cc3600ed3 -title: Basics of Numpy +title: Numpy 的基礎知識 challengeType: 11 videoId: f9QrZrKQMLI dashedName: basics-of-numpy @@ -10,7 +10,7 @@ dashedName: basics-of-numpy ## --text-- -What will the following code print? +以下代碼將打印出什麼? ```python b = np.array([[1.0,2.0,3.0],[3.0,4.0,5.0]]) diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/copying-arrays-warning.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/copying-arrays-warning.md index afe7b8d83e..ba1d60a935 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/copying-arrays-warning.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/copying-arrays-warning.md @@ -1,6 +1,6 @@ --- id: 5e9a0a8e09c5df3cc3600ed7 -title: Copying Arrays Warning +title: 複製數組警告 challengeType: 11 videoId: iIoQ0_L0GvA dashedName: copying-arrays-warning @@ -10,7 +10,7 @@ dashedName: copying-arrays-warning ## --text-- -What is the value of `a` after running the following code? +運行以下代碼後, `a` 的值是多少? ```py import numpy as np diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/initialize-array-problem.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/initialize-array-problem.md index 34e8f27604..255a51d732 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/initialize-array-problem.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/initialize-array-problem.md @@ -1,6 +1,6 @@ --- id: 5e9a0a8e09c5df3cc3600ed6 -title: Initialize Array Problem +title: 初始化數組問題 challengeType: 11 videoId: 0jGfH8BPfOk dashedName: initialize-array-problem @@ -10,7 +10,7 @@ dashedName: initialize-array-problem ## --text-- -What is another way to produce the following array? +產生以下數組的另一種方式是什麼? ```py [[0. 0. 0. 0. 0. 0. 0.] diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/initializing-different-arrays.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/initializing-different-arrays.md index a6957cc7e4..238e02321d 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/initializing-different-arrays.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/initializing-different-arrays.md @@ -1,6 +1,6 @@ --- id: 5e9a0a8e09c5df3cc3600ed5 -title: Initializing Different Arrays +title: 初始化不同的數組 challengeType: 11 videoId: CEykdsKT4U4 dashedName: initializing-different-arrays @@ -10,7 +10,7 @@ dashedName: initializing-different-arrays ## --text-- -What will the following code print? +以下代碼將打印出什麼? ```py a = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/mathematics.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/mathematics.md index f3b1a3c111..5ef28be2c3 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/mathematics.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/mathematics.md @@ -1,6 +1,6 @@ --- id: 5e9a0a8e09c5df3cc3600ed8 -title: Mathematics +title: 數學 challengeType: 11 videoId: 7txegvyhtVk dashedName: mathematics @@ -10,7 +10,7 @@ dashedName: mathematics ## --text-- -What is the value of `b` after running the following code? +運行以下代碼後, `b` 的值是多少? ```py import numpy as np diff --git a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/reorganizing-arrays.md b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/reorganizing-arrays.md index 7e4903c864..6705895d72 100644 --- a/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/reorganizing-arrays.md +++ b/curriculum/challenges/chinese-traditional/08-data-analysis-with-python/numpy/reorganizing-arrays.md @@ -1,6 +1,6 @@ --- id: 5e9a0a8e09c5df3cc3600ed9 -title: Reorganizing Arrays +title: 重組數組 challengeType: 11 videoId: VNWAQbEM-C8 dashedName: reorganizing-arrays @@ -10,7 +10,7 @@ dashedName: reorganizing-arrays ## --text-- -What code would produce the following array? +哪個代碼會生成下面的數組? ```py [[1. 1.] diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/anonymous-message-board.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/anonymous-message-board.md index 20970a8e21..4bcf54054c 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/anonymous-message-board.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/anonymous-message-board.md @@ -1,6 +1,6 @@ --- id: 587d824a367417b2b2512c45 -title: Anonymous Message Board +title: 匿名留言板 challengeType: 4 forumTopicId: 301568 dashedName: anonymous-message-board @@ -8,38 +8,38 @@ dashedName: anonymous-message-board # --description-- -Build a full stack JavaScript app that is functionally similar to this: . +構建一個功能上與此相似的全棧式 JavaScript 應用程序:。 -Working on this project will involve you writing your code using one of the following methods: +在這個項目中,你將使用以下方法之一編寫你的代碼: -- Clone [this GitHub repo](https://github.com/freeCodeCamp/boilerplate-project-messageboard/) and complete your project locally. -- Use [our repl.it starter project](https://repl.it/github/freeCodeCamp/boilerplate-project-messageboard) to complete your project. -- Use a site builder of your choice to complete the project. Be sure to incorporate all the files from our GitHub repo. +- 克隆[這個 GitHub repo](https://github.com/freeCodeCamp/boilerplate-project-messageboard/) 並在本地完成你的項目。 +- 使用 [我們的 Replit 啓動項目](https://replit.com/github/freeCodeCamp/boilerplate-project-messageboard)來完成你的項目。 +- 使用一個你喜歡的站點生成器來完成項目。 需要確定包含了我們 GitHub 倉庫的所有文件。 -When you are done, make sure a working demo of your project is hosted somewhere public. Then submit the URL to it in the `Solution Link` field. Optionally, also submit a link to your projects source code in the `GitHub Link` field. +完成本項目後,請將一個正常運行的 demo(項目演示)託管在可以公開訪問的平臺。 然後將 URL 提交到 `Solution Link` 中。 此外,還可以將項目的源碼提交到 `GitHub Link` 中。 # --instructions-- -1. Set `NODE_ENV` to test without quotes when ready to write tests and DB to your databases connection string (in `.env`) -2. Recommended to create controllers/handlers and handle routing in `routes/api.js` -3. You will add any security features to `server.js` +1. 當準備寫測試和數據庫連接字符串時,設置`NODE_ENV`爲不帶引號的變量(在`.env`文件中)。 +2. 建議在 `routes/api.js` 中創建控制器/處理器並處理路由。 +3. 你將在 `server.js` 中添加任何安全功能。 -Write the following tests in `tests/2_functional-tests.js`: +在 `tests/2_functional-tests.js` 中編寫下以下測試: -- Creating a new thread: POST request to `/api/threads/{board}` -- Viewing the 10 most recent threads with 3 replies each: GET request to `/api/threads/{board}` -- Deleting a thread with the incorrect password: DELETE request to `/api/threads/{board}` with an invalid `delete_password` -- Deleting a thread with the correct password: DELETE request to `/api/threads/{board}` with a valid `delete_password` -- Reporting a thread: PUT request to `/api/threads/{board}` -- Creating a new reply: POST request to `/api/replies/{board}` -- Viewing a single thread with all replies: GET request to `/api/replies/{board}` -- Deleting a reply with the incorrect password: DELETE request to `/api/threads/{board}` with an invalid `delete_password` -- Deleting a reply with the correct password: DELETE request to `/api/threads/{board}` with a valid `delete_password` -- Reporting a reply: PUT request to `/api/replies/{board}` +- 創建一個新的主題:發送 POST 請求到 `/api/threads/{board}`。 +- 查看最近的 10 個主題,每個主題有 3 個回覆:發送 GET 請求到 `/api/threads/{board}` +- 使用錯誤密碼刪除主題:使用錯誤的`delete_password`向`/api/threads/{board}`發出DELETE請求 +- 用正確的密碼刪除一個主題:向`/api/threads/{board}`發出DELETE請求,並提供有效的`delete_password`。 +- 報告一個主題:發送 PUT 請求到 `/api/threads/{board}`。 +- 創建一個新的回覆:發送 POST 請求到 `/api/replies/{board}`。 +- 查看一個帶有所有回覆的主題:發送 GET 請求到`/api/replies/{board}`。 +- 使用錯誤密碼刪除一個回覆:使用無效的`delete_password`向`/api/replies/{board}`發出DELETE請求。 +- 使用正確密碼刪除一個回覆:使用有效的`delete_password`向`/api/replies/{board}`發出DELETE請求。 +- 報告一個回覆:發送 PUT 請求到 `/api/replies/{board}`。 # --hints-- -You can provide your own project, not the example URL. +提交自己的項目,而不是示例的 URL。 ```js (getUserInput) => { @@ -51,7 +51,7 @@ You can provide your own project, not the example URL. }; ``` -Only allow your site to be loaded in an iFrame on your own pages. +只允許你的網站在你自己的頁面上以 iFrame 方式加載。 ```js async (getUserInput) => { @@ -61,7 +61,7 @@ async (getUserInput) => { }; ``` -Do not allow DNS prefetching. +不允許 DNS 預取。 ```js async (getUserInput) => { @@ -71,7 +71,7 @@ async (getUserInput) => { }; ``` -Only allow your site to send the referrer for your own pages. +只允許你的網站爲你自己的頁面發送 referrer 請求頭。 ```js async (getUserInput) => { @@ -81,55 +81,81 @@ async (getUserInput) => { }; ``` -You can send a POST request to `/api/threads/{board}` with form data including `text` and `delete_password`. The saved database record will have at least the fields `_id`, `text`, `created_on`(date & time), `bumped_on`(date & time, starts same as `created_on`), `reported` (boolean), `delete_password`, & `replies` (array). +你可以向 `/api/threads/{board}` 發送一個 POST 請求,其中包括 `text` 和 `delete_password` 的表單數據。 保存的數據庫記錄將至少有 `_id`、`text`、`created_on`(date & time)、`bumped_on`(date & time, starts same as `created_on`)、`reported`(布爾值)、`delete_password`、& `replies`(數組)。 + +```js +async (getUserInput) => { + const date = new Date(); + const text = `fcc_test_${date}`; + const deletePassword = 'delete_me'; + const data = { text, delete_password: deletePassword }; + const url = getUserInput('url'); + const res = await fetch(url + '/api/threads/fcc_test', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(data) + }); + if (res.ok) { + const checkData = await fetch(url + '/api/threads/fcc_test'); + const parsed = await checkData.json(); + try { + assert.equal(parsed[0].text, text); + assert.isNotNull(parsed[0]._id); + assert.equal(new Date(parsed[0].created_on).toDateString(), date.toDateString()); + assert.equal(parsed[0].bumped_on, parsed[0].created_on); + assert.isArray(parsed[0].replies); + } catch (err) { + throw new Error(err.responseText || err.message); + } + } else { + throw new Error(`${res.status} ${res.statusText}`); + } +}; +``` + +你可以向 `/api/replies/{board}` 發送一個 POST 請求,其中包括字段 `text`、`delete_password` & `thread_id`。 這將更新 `bumped_on` 日期到評論日期。 在主題的 `replies` 數組中,將保存一個對象,至少有 `_id`、`text`、`created_on`、`delete_password`、& `reported` 這些屬性。 ```js ``` -You can send a POST request to `/api/replies/{board}` with form data including `text`, `delete_password`, & `thread_id`. This will update the `bumped_on` date to the comment's date. In the thread's `replies` array, an object will be saved with at least the properties `_id`, `text`, `created_on`, `delete_password`, & `reported`. +你可以向 `/api/threads/{board}` 發送一個 GET 請求。 返回的將是一個數組,包括論壇上最近的 10 個被回覆的主題,及每個主題最新的 3 個回帖。 `reported` 和 `delete_password` 字段將不會被髮送到客戶端。 ```js ``` -You can send a GET request to `/api/threads/{board}`. Returned will be an array of the most recent 10 bumped threads on the board with only the most recent 3 replies for each. The `reported` and `delete_password` fields will not be sent to the client. +你可以向 `/api/replies/{board}?thread_id={thread_id}` 發送一個 GET 請求。 返回的將是帶有所有的回覆的整個主題,不包括與之前測試相同的客戶端字段。 ```js ``` -You can send a GET request to `/api/replies/{board}?thread_id={thread_id}`. Returned will be the entire thread with all its replies, also excluding the same fields from the client as the previous test. +你可以向 `/api/threads/{board}` 發送一個 DELETE 請求,並傳遞 `thread_id` & `delete_password` 來刪除該線程。 返回的將是字符串 `incorrect password` 或 `success`。 ```js ``` -You can send a DELETE request to `/api/threads/{board}` and pass along the `thread_id` & `delete_password` to delete the thread. Returned will be the string `incorrect password` or `success`. +你可以向 `/api/replies/{board}` 發送一個 DELETE 請求,並傳遞 `thread_id`、`reply_id`、& `delete_password`。 返回的將是字符串 `incorrect password` 或 `success`。 成功後,`reply_id` 的文本將更改爲 `[deleted]`。 ```js ``` -You can send a DELETE request to `/api/replies/{board}` and pass along the `thread_id`, `reply_id`, & `delete_password`. Returned will be the string `incorrect password` or `success`. On success, the text of the `reply_id` will be changed to `[deleted]`. +你可以向 `/api/threads/{board}` 發送一個 PUT 請求,並傳遞 `thread_id`。 返回的將是字符串 `success`。 `thread_id` 回覆的 `reported` 值將改爲 `true`。 ```js ``` -You can send a PUT request to `/api/threads/{board}` and pass along the `thread_id`. Returned will be the string `success`. The `reported` value of the `thread_id` will be changed to `true`. +你可以通過向 `/api/replies/{board}` 發送 PUT 請求並傳遞 `thread_id` & `reply_id`。 返回的將是字符串 `success`。 `reply_id` 的 `reported` 值將被改變爲 `true`。 ```js ``` -You can send a PUT request to `/api/replies/{board}` and pass along the `thread_id` & `reply_id`. Returned will be the string `success`. The `reported` value of the `reply_id` will be changed to `true`. - -```js - -``` - -All 10 functional tests are complete and passing. +所有 10 項功能測試都已完成並通過。 ```js diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/port-scanner.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/port-scanner.md index 5c776ca7d0..fc0bb64c55 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/port-scanner.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/port-scanner.md @@ -1,33 +1,34 @@ --- id: 5e46f979ac417301a38fb932 -title: Port Scanner +title: 端口掃描器 challengeType: 10 +forumTopicId: 462372 helpCategory: Python dashedName: port-scanner --- # --description-- -Create a port scanner using Python. +使用 Python 創建一個端口掃描器。 -You can access [the full project description and starter code on Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-port-scanner). +你可以訪問 [Replit 上的完整項目描述和啓動代碼](https://replit.com/github/freeCodeCamp/boilerplate-port-scanner)。 -After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below. +在打開鏈接之後 fork 該項目。 根據 “README.md” 中的指示完成整個項目,然後在下面提交你的項目鏈接。 -We are still developing the interactive instructional part of the Python curriculum. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you some of the Python skills required for this project: +Python 課程的交互式教學部分仍在開發當中。 目前,freeCodeCamp YouTube 頻道上的一些視頻將會教授你這個項目要求的一些 Python 技能。 # --hints-- -It should pass all Python tests. +它應該通過所有的 Python 測試。 ```js diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/secure-real-time-multiplayer-game.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/secure-real-time-multiplayer-game.md index 3ced001df3..c9f85c9f16 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/secure-real-time-multiplayer-game.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/secure-real-time-multiplayer-game.md @@ -1,23 +1,28 @@ --- id: 5e601c775ac9d0ecd8b94aff -title: Secure Real Time Multiplayer Game +title: 安全的實時多人遊戲 challengeType: 4 +forumTopicId: 462375 dashedName: secure-real-time-multiplayer-game --- # --description-- -Develop a 2D real time multiplayer game using the HTML Canvas API and [Socket.io](https://socket.io/) that is functionally similar to this: . Working on this project will involve you writing your code using one of the following methods: +使用 HTML Canvas API 和 [Socket.io](https://socket.io/) 開發一個 2D 實時多人遊戲,其功能與此類似:。 在這個項目中,你將使用以下方法之一編寫你的代碼: -- Clone [this GitHub repo](https://github.com/freeCodeCamp/boilerplate-project-secure-real-time-multiplayer-game/) and complete your project locally. -- Use [our repl.it starter project](https://repl.it/github/freeCodeCamp/boilerplate-project-secure-real-time-multiplayer-game) to complete your project. -- Use a site builder of your choice to complete the project. Be sure to incorporate all the files from our GitHub repo. +- 克隆[這個 GitHub repo](https://github.com/freeCodeCamp/boilerplate-project-secure-real-time-multiplayer-game/),並在本地完成你的項目。 +- 使用[我們的 Replit 初始項目](https://replit.com/github/freeCodeCamp/boilerplate-project-secure-real-time-multiplayer-game)來完成你的項目。 +- 使用您選擇的站點生成器來完成項目。 需要確定包含了我們 GitHub 倉庫的所有文件。 -When you are done, make sure a working demo of your project is hosted somewhere public. Then submit the URL to it in the `Solution Link` field. Optionally, also submit a link to your project's source code in the `GitHub Link` field. +完成本項目後,請將一個正常運行的 demo(項目演示)託管在可以公開訪問的平臺。 然後在 `Solution Link` 框中提交你的項目 URL。 此外,還可以將項目的源碼提交到 `GitHub Link` 中。 + +# --instructions-- + +**注意** :`helmet@^3.21.3` 是用戶故事所必需的。 這意味着你需要使用以前版本的 Helmet 的文檔,瞭解如何實現用戶故事的信息。 # --hints-- -You can provide your own project, not the example URL. +提交自己的項目,而不是示例的 URL。 ```js (getUserInput) => { @@ -29,112 +34,134 @@ You can provide your own project, not the example URL. }; ``` -Multiple players can connect to a server and play. +多個玩家可以連接到一臺服務器遊玩。 ```js ``` -Each player has an avatar. +每個玩家都有頭像。 ```js ``` -Each player is represented by an object created by the `Player` class in `Player.mjs`. +每個玩家都由在 `Player.mjs` 中創建的 `Player` 類對象來代表。 ```js ``` -At a minimum, each player object should contain a unique `id`, a `score`, and `x` and `y` coordinates representing the player's current position. +至少,每個玩家對象應該包含一個唯一的 `id`、一個 `score`,以及代表玩家當前位置的 `x` 和 `y` 座標。 ```js ``` -The game has at least one type of collectible item. Complete the `Collectible` class in `Collectible.mjs` to implement this. +遊戲至少有一種類型的可收藏物品。 在 `Collectible.mjs` 中完成 `Collectible` 類來實現這一點。 ```js ``` -At a minimum, each collectible item object created by the `Collectible` class should contain a unique `id`, a `value`, and `x` and `y` coordinates representing the item's current position. +至少,每個由 `Collectible` 類創建的可收集物品對象應該包含一個唯一的 `id`、一個 `value`,以及代表該物品當前位置的 `x` 和 `y` 座標。 ```js ``` -Players can use the WASD and/or arrow keys to move their avatar. Complete the `movePlayer` method in `Player.mjs` to implement this. +玩家可以使用 WASD 或方向鍵移動頭像。 完成 `Player.mjs` 中的 `movePlayer` 方法來實現這一功能。 ```js ``` -The `movePlayer` method should accept two arguments: a string of "up", "down", "left", or "right", and a number for the amount of pixels the player's position should change. `movePlayer` should adjust the `x` and `y` coordinates of the player object it's called from. +`movePlayer` 方法應該接受兩個參數:一個是 “up”、“down”、“left” 或 “right” 的字符串,另一個是玩家角色位置應該改變的像素數量。 `movePlayer` 應該調整它所調用的玩家對象的 `x` 和 `y` 座標。 ```js ``` -The player's score should be used to calculate their rank among the other players. Complete the `calculateRank` method in the `Player` class to implement this. +用玩家的分數來計算他們相對其他玩家的名次。 在 `Player` 類中完成 `calculateRank` 方法來實現這個。 ```js ``` -The `calculateRank` method should accept an array of objects representing all connected players and return the string `Rank: currentRanking/totalPlayers`. For example, in a game with two players, if Player A has a score of 3 and Player B has a score of 5, `calculateRank` for Player A should return `Rank: 2/2`. +`calculateRank` 方法應該接受一個代表所有在線玩家的對象數組,並返回字符串 `Rank: currentRanking/totalPlayers`。 例如,在一局有兩個玩家的遊戲中,如果玩家 A 的分數是 3,玩家 B 的分數是 5,那麼玩家 A 的 `calculateRank` 應該返回 `Rank: 2/2`。 ```js ``` -Players can collide with a collectible item. Complete the `collision` method in `Player.mjs` to implement this. +玩家可以與可收集物品發生碰撞。 完成 `Player.mjs` 中的 `collision` 方法來實現這一點。 ```js ``` -The `collision` method should accept a collectible item's object as an argument. If the player's avatar intersects with the item, the `collision` method should return `true`. +`collision` 方法應該接受一個可收集物品的對象作爲參數。 如果玩家的頭像與物品相交,`collision` 方法應該返回 `true`。 ```js ``` -All players are kept in sync. +所有玩家都保持遊戲狀態同步。 ```js ``` -Players can disconnect from the game at any time. +玩家可以隨時斷開與遊戲的連接。 ```js ``` -Prevent the client from trying to guess / sniff the MIME type. +阻止客戶端試圖猜測/嗅探 MIME 類型。 ```js - +async (getUserInput) => { + const data = await fetch(getUserInput('url') + '/_api/app-info'); + const parsed = await data.json(); + assert.equal(parsed.headers['x-content-type-options'], 'nosniff'); +}; ``` -Prevent cross-site scripting (XSS) attacks. +防止跨站腳本(XSS)攻擊。 ```js - +async (getUserInput) => { + const data = await fetch(getUserInput('url') + '/_api/app-info'); + const parsed = await data.json(); + assert.equal(parsed.headers['x-xss-protection'], '1; mode=block'); +}; ``` -Nothing from the website is cached in the client. +客戶端沒有緩存任何網站內容。 ```js - +async (getUserInput) => { + const data = await fetch(getUserInput('url') + '/_api/app-info'); + const parsed = await data.json(); + assert.equal(parsed.headers['surrogate-control'], 'no-store'); + assert.equal( + parsed.headers['cache-control'], + 'no-store, no-cache, must-revalidate, proxy-revalidate' + ); + assert.equal(parsed.headers['pragma'], 'no-cache'); + assert.equal(parsed.headers['expires'], '0'); +}; ``` -The headers say that the site is powered by "PHP 7.4.3" even though it isn't (as a security measure). +請求頭顯示該網站是由 “PHP 7.4.3” 驅動的,儘管實際並非如此(作爲一種安全防禦措施)。 ```js - +async (getUserInput) => { + const data = await fetch(getUserInput('url') + '/_api/app-info'); + const parsed = await data.json(); + assert.equal(parsed.headers['x-powered-by'], 'PHP 7.4.3'); +}; ``` # --solutions-- diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/sha-1-password-cracker.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/sha-1-password-cracker.md index 8a79bb1b7c..7a74cecb66 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/sha-1-password-cracker.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/sha-1-password-cracker.md @@ -1,33 +1,34 @@ --- id: 5e46f983ac417301a38fb933 -title: SHA-1 Password Cracker +title: SHA-1 密碼破解器 challengeType: 10 +forumTopicId: 462374 helpCategory: Python dashedName: sha-1-password-cracker --- # --description-- -For this project you will learn about the importance of good security by creating a password cracker to figure out passwords that were hashed using SHA-1. +在這個項目中,你將通過創建一個密碼破解器來找出使用 SHA-1 散列的密碼,從而瞭解到良好安全的重要性。 -You can access [the full project description and starter code on Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-SHA-1-password-cracker). +你可以訪問 [Replit 上的完整項目描述和啓動代碼](https://replit.com/github/freeCodeCamp/boilerplate-SHA-1-password-cracker)。 -After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below. +進入該鏈接後,fork 該項目。 一旦你根據 “README.md” 中的說明完成了項目,請在下面提交你的項目鏈接。 -We are still developing the interactive instructional part of the Python curriculum. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you some of the Python skills required for this project: +我們仍在開發 Python 課程的交互式教學部分。 目前,freeCodeCamp.org YouTube 頻道上的一些視頻可以教你這個項目所需的一些 Python 技能。 # --hints-- -It should pass all Python tests. +它應該通過所有的 Python 測試。 ```js diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/stock-price-checker.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/stock-price-checker.md index ce584c58d5..d2debe662a 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/stock-price-checker.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-projects/stock-price-checker.md @@ -1,6 +1,6 @@ --- id: 587d824a367417b2b2512c44 -title: Stock Price Checker +title: 股票價格查看器 challengeType: 4 forumTopicId: 301572 dashedName: stock-price-checker @@ -8,36 +8,36 @@ dashedName: stock-price-checker # --description-- -Build a full stack JavaScript app that is functionally similar to this: . +構建一個 JavaScript 的全棧應用,在功能上與這個應用相似:。 -Since all reliable stock price APIs require an API key, we've built a workaround. Use to get up-to-date stock price information without needing to sign up for your own key. +由於所有可靠的股票價格 API 都需要一個 API 密鑰,我們已經建立了一個解決方案。 使用 [https://stock-price-checer-proxy.freecodecamp.rocks/](https://stock-price-checker-proxy.freecodecamp.rocks/) 獲取最新的股票價格信息,而無需註冊您自己的密鑰。 -Working on this project will involve you writing your code using one of the following methods: +可以採用下面的任意一種方式完成這個挑戰: -- Clone [this GitHub repo](https://github.com/freeCodeCamp/boilerplate-project-stockchecker/) and complete your project locally. -- Use [our repl.it starter project](https://repl.it/github/freeCodeCamp/boilerplate-project-stockchecker) to complete your project. -- Use a site builder of your choice to complete the project. Be sure to incorporate all the files from our GitHub repo. +- 克隆 [this GitHub repo](https://github.com/freeCodeCamp/boilerplate-project-stockchecker/) 並在本地完成項目。 +- 使用[我們的 Replit 啓動項目](https://replit.com/github/freeCodeCamp/boilerplate-project-stockchecker)來完成你的項目。 +- 使用你選擇的網站生成器來完成項目。 需要包含我們 GitHub 倉庫的所有文件。 -When you are done, make sure a working demo of your project is hosted somewhere public. Then submit the URL to it in the `Solution Link` field. Optionally, also submit a link to your projects source code in the `GitHub Link` field. +完成本項目後,請將一個正常運行的 demo(項目演示)託管在可以公開訪問的平臺。 然後將 URL 提交到 `Solution Link` 中。 此外,還可以將項目的源碼提交到 `GitHub Link` 中。 # --instructions-- -1. SET `NODE_ENV` to `test` without quotes and set `DB` to your MongoDB connection string -2. Complete the project in `routes/api.js` or by creating a handler/controller -3. You will add any security features to `server.js` -4. You will create all of the functional tests in `tests/2_functional-tests.js` +1. 將 `NODE_ENV` 設置爲 `test`,不帶引號,並將 `DB` 設爲你的 MongoDB 連接字符串。 +2. 在 `routes/api.js` 中完成項目,或者通過創建一個處理程序/控制器來完成項目 +3. 添加安全功能到 `server.js`。 +4. 在 `tests/2_functional-tests.js` 中創建所有的功能測試 -Write the following tests in `tests/2_functional-tests.js`: +在 `tests/2_functional-tests.js` 中編寫下以下測試: -- Viewing one stock: GET request to `/api/stock-prices/` -- Viewing one stock and liking it: GET request to `/api/stock-prices/` -- Viewing the same stock and liking it again: GET request to `/api/stock-prices/` -- Viewing two stocks: GET request to `/api/stock-prices/` -- Viewing two stocks and liking them: GET request to `/api/stock-prices/` +- 查看股價:發送 GET 請求到 `/api/stock-prices/` +- 查看一個股票並關注它:發送 GET 請求到 `/api/stock-prices/` +- 查看同一只股票並再次發送關注:發送 GET 請求到 `/api/stock-prices/` +- 查看兩隻股票:發送 GET 請求到 `/api/stock-prices/` +- 查看兩隻股票並關注它:發送 GET 請求到 `/api/stock-prices/` # --hints-- -You can provide your own project, not the example URL. +提交自己的項目,而不是示例的 URL。 ```js (getUserInput) => { @@ -47,7 +47,7 @@ You can provide your own project, not the example URL. }; ``` -You should set the content security policies to only allow loading of scripts and CSS from your server. +將內容安全策略設置爲僅允許從服務器加載腳本和 CSS。 ```js async (getUserInput) => { @@ -62,7 +62,7 @@ async (getUserInput) => { }; ``` -You can send a `GET` request to `/api/stock-prices` with form data containing a NASDAQ stock ticker. Returned will be an object with the property `stockData`. +你可以向 `/api/stock-prices` 發送一個 `GET` 請求,將納斯達克股票代碼賦值給 `stock` 查詢參數。 返回的對象將包含一個名爲 `stockData` 的屬性。 ```js async (getUserInput) => { @@ -74,7 +74,7 @@ async (getUserInput) => { }; ``` -The `stockData` property includes the `stock` ticker as a string, the `price` as a number, and `likes` as a number. +`stockData` 屬性包括字符串 `stock` 代碼、數字 `price`,以及數字 `likes`。 ```js async (getUserInput) => { @@ -89,13 +89,13 @@ async (getUserInput) => { }; ``` -You can also pass along a `like` field as `true` (boolean) to have your like added to the stock(s). Only 1 like per IP should be accepted. +你也可以用作爲 `true`(布爾值)來傳遞 `like` 字段,讓你的偏好添加到股票中。 每個 IP 應該只接受 1 個贊。 ```js ``` -If you pass along 2 stocks, the returned value will be an array with information about both stocks. Instead of `likes`, it will display `rel_likes` (the difference between the likes on both stocks) for both `stockData` objects. +如果你傳遞了兩隻股票,返回值將是一個包含這兩隻股票信息的數組。 它將會顯示對於兩個 `stockData` 對象的 `rel_likes`(兩隻股票所獲得的贊同數的區別),而不是 `likes`。 ```js async (getUserInput) => { @@ -110,7 +110,7 @@ async (getUserInput) => { }; ``` -All 5 functional tests are complete and passing. +所有 5 項功能測試都已完成並通過。 ```js async (getUserInput) => { diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/ask-browsers-to-access-your-site-via-https-only-with-helmet.hsts.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/ask-browsers-to-access-your-site-via-https-only-with-helmet.hsts.md index 6bf78cfccc..c028f37491 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/ask-browsers-to-access-your-site-via-https-only-with-helmet.hsts.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/ask-browsers-to-access-your-site-via-https-only-with-helmet.hsts.md @@ -1,6 +1,6 @@ --- id: 587d8248367417b2b2512c3c -title: Ask Browsers to Access Your Site via HTTPS Only with helmet.hsts() +title: 用 helmet.hsts() 使瀏覽器只能通過 HTTPS 訪問你的網站。 challengeType: 2 forumTopicId: 301573 dashedName: ask-browsers-to-access-your-site-via-https-only-with-helmet-hsts @@ -8,19 +8,19 @@ dashedName: ask-browsers-to-access-your-site-via-https-only-with-helmet-hsts # --description-- -As a reminder, this project is being built upon the following starter project on [Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-infosec), or cloned from [GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/). +請注意,本項目在[這個 Repl.it 項目](https://replit.com/github/freeCodeCamp/boilerplate-infosec)的基礎上進行開發。你也可以從 [GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/) 上克隆。 -HTTP Strict Transport Security (HSTS) is a web security policy which helps to protect websites against protocol downgrade attacks and cookie hijacking. If your website can be accessed via HTTPS you can ask user’s browsers to avoid using insecure HTTP. By setting the header Strict-Transport-Security, you tell the browsers to use HTTPS for the future requests in a specified amount of time. This will work for the requests coming after the initial request. +HTTP 嚴格傳輸安全(HSTS)是一種網絡安全策略,有助於保護網站免受協議降級攻擊和 cookie 劫持。 如果你的網站可以通過 HTTPS 訪問,你可以要求用戶的瀏覽器避免使用不安全的 HTTP。 通過設置標頭 Strict-Transport-Security,你告訴瀏覽器在指定時間內對未來的請求使用 HTTPS。 這將對初始請求之後的請求起作用。 # --instructions-- -Configure `helmet.hsts()` to use HTTPS for the next 90 days. Pass the config object `{maxAge: timeInSeconds, force: true}`. You can create a variable `ninetyDaysInSeconds = 90*24*60*60;` to use for the `timeInSeconds`. Repl.it already has hsts enabled. To override its settings you need to set the field "force" to true in the config object. We will intercept and restore the Repl.it header, after inspecting it for testing. +配置 `helmet.hsts()` 以在未來 90 天內使用 HTTPS。 傳遞配置對象 `{maxAge: timeInSeconds, force: true}`。 你可以創建一個變量 `ninetyDaysInSeconds = 90*24*60*60;` 來用於 `timeInSeconds`。 Replit 已經啓用了 hsts。 要覆蓋它的設置,你需要在配置對象中把 “force” 字段設置爲 true。 我們將攔截並在對其進行檢查測試後恢復 Replit 請求頭。 -Note: Configuring HTTPS on a custom website requires the acquisition of a domain, and a SSL/TLS Certificate. +注意:在自定義網站上配置 HTTPS 需要獲得一個域名,以及一個 SSL/TLS 證書。 # --hints-- -helmet.hsts() middleware should be mounted correctly +helmet.hsts() 中間件應該被正確安裝。 ```js (getUserInput) => @@ -35,7 +35,7 @@ helmet.hsts() middleware should be mounted correctly ); ``` -maxAge should be equal to 7776000 s (90 days) +maxAge 應該等於 7776000 秒(90 天)。 ```js (getUserInput) => diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/avoid-inferring-the-response-mime-type-with-helmet.nosniff.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/avoid-inferring-the-response-mime-type-with-helmet.nosniff.md index 2bbd3bf02e..3df51eff7f 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/avoid-inferring-the-response-mime-type-with-helmet.nosniff.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/avoid-inferring-the-response-mime-type-with-helmet.nosniff.md @@ -1,6 +1,6 @@ --- id: 587d8248367417b2b2512c3a -title: Avoid Inferring the Response MIME Type with helmet.noSniff() +title: 用 helmet.noSniff() 避免推斷出響應的 MIME 類型。 challengeType: 2 forumTopicId: 301574 dashedName: avoid-inferring-the-response-mime-type-with-helmet-nosniff @@ -8,15 +8,15 @@ dashedName: avoid-inferring-the-response-mime-type-with-helmet-nosniff # --description-- -As a reminder, this project is being built upon the following starter project on [Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-infosec), or cloned from [GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/). Browsers can use content or MIME sniffing to override response `Content-Type` headers to guess and process the data using an implicit content type. While this can be convenient in some scenarios, it can also lead to some dangerous attacks. This middleware sets the X-Content-Type-Options header to `nosniff`, instructing the browser to not bypass the provided `Content-Type`. +請注意,本項目在[這個 Repl.it 項目](https://replit.com/github/freeCodeCamp/boilerplate-infosec)的基礎上進行開發。你也可以從 [GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/) 上克隆。 瀏覽器可以使用內容或 MIME 嗅探來覆蓋響應的 `Content-Type` 頭,猜測並使用隱含的內容類型來處理數據。 雖然這在某些情況下可能很方便,但也可能導致一些危險的攻擊。 該中間件將 X-Content-Type-Options 頭設置爲 `nosniff`,指示瀏覽器不要繞過所提供的 `Content-Type`。 # --instructions-- -Use the `helmet.noSniff()` method on your server. +在你的服務器上使用 `helmet.noSniff()` 方法。 # --hints-- -helmet.noSniff() middleware should be mounted correctly +helmet.noSniff() 中間件應該被正確安裝 ```js (getUserInput) => diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/configure-helmet-using-the-parent-helmet-middleware.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/configure-helmet-using-the-parent-helmet-middleware.md index 6865d3896c..9a72ee091b 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/configure-helmet-using-the-parent-helmet-middleware.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/configure-helmet-using-the-parent-helmet-middleware.md @@ -1,6 +1,6 @@ --- id: 587d8249367417b2b2512c40 -title: Configure Helmet Using the ‘parent’ helmet() Middleware +title: 使用 helmet() 中間件來配置 Helmet challengeType: 2 forumTopicId: 301575 dashedName: configure-helmet-using-the-parent-helmet-middleware @@ -8,11 +8,11 @@ dashedName: configure-helmet-using-the-parent-helmet-middleware # --description-- -As a reminder, this project is being built upon the following starter project on [Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-infosec), or cloned from [GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/). +請注意,本項目在[這個 Repl.it 項目](https://replit.com/github/freeCodeCamp/boilerplate-infosec)的基礎上進行開發。你也可以從 [GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/) 上克隆。 -`app.use(helmet())` will automatically include all the middleware introduced above, except `noCache()`, and `contentSecurityPolicy()`, but these can be enabled if necessary. You can also disable or configure any other middleware individually, using a configuration object. +`app.use(helmet())` 將自動包括上面介紹的所有中間件,除了 `noCache()` 和 `contentSecurityPolicy()`,但如果有必要,這些可以被啓用。 你也可以使用配置對象,單獨禁用或配置任何其他中間件。 -**Example:** +**例如:** ```js app.use(helmet({ @@ -21,7 +21,7 @@ app.use(helmet({ }, contentSecurityPolicy: { // enable and configure directives: { - defaultSrc: ["self"], + defaultSrc: ["'self'"], styleSrc: ['style.com'], } }, @@ -29,11 +29,11 @@ app.use(helmet({ })) ``` -We introduced each middleware separately for teaching purposes and for ease of testing. Using the ‘parent’ `helmet()` middleware is easy to implement in a real project. +爲了教學目的和便於測試,我們分別介紹了每個中間件。 使用“父”`helmet()` 中間件很容易在真實項目中實現。 # --hints-- -no tests - it's a descriptive challenge +沒有測試 - 這是一個描述性的挑戰 ```js assert(true); diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/disable-client-side-caching-with-helmet.nocache.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/disable-client-side-caching-with-helmet.nocache.md index 21cf373400..5ecebfe01f 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/disable-client-side-caching-with-helmet.nocache.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/disable-client-side-caching-with-helmet.nocache.md @@ -1,6 +1,6 @@ --- id: 587d8249367417b2b2512c3e -title: Disable Client-Side Caching with helmet.noCache() +title: 使用 helment.noCache() 禁用客戶端緩存 challengeType: 2 forumTopicId: 301576 dashedName: disable-client-side-caching-with-helmet-nocache @@ -8,17 +8,17 @@ dashedName: disable-client-side-caching-with-helmet-nocache # --description-- -As a reminder, this project is being built upon the following starter project on [Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-infosec), or cloned from [GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/). +請注意,本項目在[這個 Repl.it 項目](https://replit.com/github/freeCodeCamp/boilerplate-infosec)的基礎上進行開發。 你也可以從[GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/)上克隆。 -If you are releasing an update for your website, and you want the users to always download the newer version, you can (try to) disable caching on client’s browser. It can be useful in development too. Caching has performance benefits, which you will lose, so only use this option when there is a real need. +如果你正在爲你的網站發佈更新,而你希望用戶總是下載較新的版本,你可以(嘗試)在客戶的瀏覽器上禁用緩存。 它在開發中也很有用。 緩存具有性能優勢,你將失去這些優勢,因此只有在真正需要時才使用此選項。 # --instructions-- -Use the `helmet.noCache()` method on your server. +在你的服務器上使用 `helmet.noCache()` 方法。 # --hints-- -helmet.noCache() middleware should be mounted correctly +應正確加載 helmet.noCache() 中間件 ```js (getUserInput) => diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/disable-dns-prefetching-with-helmet.dnsprefetchcontrol.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/disable-dns-prefetching-with-helmet.dnsprefetchcontrol.md index 5d212b6dbe..455ce2a254 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/disable-dns-prefetching-with-helmet.dnsprefetchcontrol.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/disable-dns-prefetching-with-helmet.dnsprefetchcontrol.md @@ -1,6 +1,6 @@ --- id: 587d8248367417b2b2512c3d -title: Disable DNS Prefetching with helmet.dnsPrefetchControl() +title: 使用 helmet.dnsPrefetchControl() 禁用 DNS 預獲取 challengeType: 2 forumTopicId: 301577 dashedName: disable-dns-prefetching-with-helmet-dnsprefetchcontrol @@ -8,17 +8,17 @@ dashedName: disable-dns-prefetching-with-helmet-dnsprefetchcontrol # --description-- -As a reminder, this project is being built upon the following starter project on [Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-infosec), or cloned from [GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/). +請注意,本項目在[這個 Repl.it 項目](https://replit.com/github/freeCodeCamp/boilerplate-infosec)的基礎上進行開發。你也可以從 [GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/) 上克隆。 -To improve performance, most browsers prefetch DNS records for the links in a page. In that way the destination ip is already known when the user clicks on a link. This may lead to over-use of the DNS service (if you own a big website, visited by millions people…), privacy issues (one eavesdropper could infer that you are on a certain page), or page statistics alteration (some links may appear visited even if they are not). If you have high security needs you can disable DNS prefetching, at the cost of a performance penalty. +爲了提高性能,大部分瀏覽器都會爲頁面上的鏈接預先加載 DNS 記錄。 這樣當用戶點擊一個鏈接的時候瀏覽器已經知道其 IP 地址了。 但這也會造成 DNS 服務的過度使用(如果你有一個百萬用戶數量級的大型網站)、隱私問題(竊聽者可以藉此推測出你在訪問哪個頁面)、頁面統計數據準確性(有些沒訪問過的鏈接會被標記成已訪問)。 如果你對安全性要求比較高,你應該禁用 DNS 預加載。 當然,這樣做會讓你損失一些性能。 # --instructions-- -Use the `helmet.dnsPrefetchControl()` method on your server. +應正確加載 helmet.dnsPrefetchControl() 中間件 # --hints-- -helmet.dnsPrefetchControl() middleware should be mounted correctly +應正確加載 helmet.dnsPrefetchControl() 中間件 ```js (getUserInput) => diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-asynchronously.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-asynchronously.md index 5d6126daa7..43ca7a1372 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-asynchronously.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-asynchronously.md @@ -1,6 +1,6 @@ --- id: 58a25bcff9fc0f352b528e7d -title: Hash and Compare Passwords Asynchronously +title: 哈希和異步比較密碼 challengeType: 2 forumTopicId: 301578 dashedName: hash-and-compare-passwords-asynchronously @@ -8,9 +8,9 @@ dashedName: hash-and-compare-passwords-asynchronously # --description-- -As a reminder, this project is being built upon the following starter project on [Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-bcrypt), or cloned from [GitHub](https://github.com/freeCodeCamp/boilerplate-bcrypt/). +請注意,本項目在[這個 Repl.it 項目](https://replit.com/github/freeCodeCamp/boilerplate-infosec)的基礎上進行開發。 你也可以從[GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/)上克隆。 -As hashing is designed to be computationally intensive, it is recommended to do so asynchronously on your server as to avoid blocking incoming connections while you hash. All you have to do to hash a password asynchronous is call +由於哈希運算會佔用很大計算機資源,並且會耗費比較多時間,因此比較推薦的做法是異步調用哈希算法,這樣就不會因此阻止其它連接或請求了。 異步調用哈希方法非常簡單,只需要: ```js bcrypt.hash(myPlaintextPassword, saltRounds, (err, hash) => { @@ -20,9 +20,9 @@ bcrypt.hash(myPlaintextPassword, saltRounds, (err, hash) => { # --instructions-- -Add this hashing function to your server(we've already defined the variables used in the function for you to use) and log it to the console for you to see! At this point you would normally save the hash to your database. +把這段哈希方法添加到你的服務器(我們已經定義好這個方法的變量給你直接使用了),然後你可以嘗試在控制檯輸出。 之後,我們通常需要把哈希的結果保存到數據庫。 -Now when you need to figure out if a new input is the same data as the hash you would just use the compare function. +當你需要對比用戶輸入的值是否和之前哈希過的值一樣的時候,只需要調用對比函數: ```js bcrypt.compare(myPlaintextPassword, hash, (err, res) => { @@ -30,7 +30,7 @@ bcrypt.compare(myPlaintextPassword, hash, (err, res) => { }); ``` -Add this into your existing hash function(since you need to wait for the hash to complete before calling the compare function) after you log the completed hash and log 'res' to the console within the compare. You should see in the console a hash then 'true' is printed! If you change 'myPlaintextPassword' in the compare function to 'someOtherPlaintextPassword' then it should say false. +當控制檯輸出生成的哈希並在對比的回調中輸出結果後,我們就可以將其添加到現有的哈希函數中。 控制檯中會首先輸出一個哈希結果,然後輸出 true。 如果將比較函數中的 “myPlaintextPassword” 更改爲 “someOtherPlaintextPassword”,則比較的結果應顯示 false。 ```js bcrypt.hash('passw0rd!', 13, (err, hash) => { @@ -43,11 +43,11 @@ bcrypt.hash('passw0rd!', 13, (err, hash) => { ``` -Submit your page when you think you've got it right. +請在完成挑戰後提交你的頁面。 # --hints-- -Async hash should be generated and correctly compared. +應生成異步散列並正確比較。 ```js (getUserInput) => diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-synchronously.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-synchronously.md index c03109f16a..c19836bc32 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-synchronously.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-synchronously.md @@ -1,6 +1,6 @@ --- id: 58a25bcff9fc0f352b528e7e -title: Hash and Compare Passwords Synchronously +title: 哈希和同步比較密碼 challengeType: 2 forumTopicId: 301579 dashedName: hash-and-compare-passwords-synchronously @@ -8,31 +8,31 @@ dashedName: hash-and-compare-passwords-synchronously # --description-- -As a reminder, this project is being built upon the following starter project on [Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-bcrypt), or cloned from [GitHub](https://github.com/freeCodeCamp/boilerplate-bcrypt/). +請注意,本項目在 [這個 Repl.it 項目](https://replit.com/github/freeCodeCamp/boilerplate-bcrypt) 的基礎上進行開發。 你也可以從 [GitHub](https://github.com/freeCodeCamp/boilerplate-bcrypt/) 上克隆。 -Hashing synchronously is just as easy to do but can cause lag if using it server side with a high cost or with hashing done very often. Hashing with this method is as easy as calling +同步執行哈希運算是非常簡單的,但這會在哈希計算量大並且次數多的情況下造成延遲。 用這個方法哈希就像調用函數一樣簡單。 ```js var hash = bcrypt.hashSync(myPlaintextPassword, saltRounds); ``` -Add this method of hashing to your code and then log the result to the console. Again, the variables used are already defined in the server so you won't need to adjust them. You may notice even though you are hashing the same password as in the async function, the result in the console is different- this is due to the salt being randomly generated each time as seen by the first 22 characters in the third string of the hash. Now to compare a password input with the new sync hash, you would use the compareSync method: +把同步哈希的方法添加到你的代碼,並在控制檯輸出。 和之前一樣,我們已經爲你定義好了你需要使用的變量,你不需要做任何改動。 你可能會注意到即使你使用與異步函數相同的密碼進行哈希處理,控制檯中的結果也不同,這是由於每次哈希值隨機生成,如第三個哈希字符串中的前 22 個字符所示。 現在,爲了比較一個密碼輸入和新的同步哈希值,你將使用 compareSync 方法。 ```js var result = bcrypt.compareSync(myPlaintextPassword, hash); ``` -with the result being a boolean true or false. +返回的結果爲 true 或 false。 # --instructions-- -Add the function in and log the result to the console to see it working. +請添加這個方法,並把結果輸出到控制檯,以此來驗證同步哈希操作是否成功。 -Submit your page when you think you've got it right. +請在完成挑戰後提交你的頁面。 # --hints-- -Sync hash should be generated and correctly compared. +應同步地進行哈希並正確地執行對比 ```js (getUserInput) => diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/hide-potentially-dangerous-information-using-helmet.hidepoweredby.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/hide-potentially-dangerous-information-using-helmet.hidepoweredby.md index 630302ea38..32214afbae 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/hide-potentially-dangerous-information-using-helmet.hidepoweredby.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/hide-potentially-dangerous-information-using-helmet.hidepoweredby.md @@ -1,6 +1,6 @@ --- id: 587d8247367417b2b2512c37 -title: Hide Potentially Dangerous Information Using helmet.hidePoweredBy() +title: 使用 helmet.hidePoweredBy() 隱藏潛在的危險信息 challengeType: 2 forumTopicId: 301580 dashedName: hide-potentially-dangerous-information-using-helmet-hidepoweredby @@ -8,13 +8,13 @@ dashedName: hide-potentially-dangerous-information-using-helmet-hidepoweredby # --description-- -As a reminder, this project is being built upon the following starter project on [Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-infosec), or cloned from [GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/). +請注意,本項目在[這個 Repl.it 項目](https://replit.com/github/freeCodeCamp/boilerplate-infosec)的基礎上進行開發。你也可以從 [GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/) 上克隆。 -Hackers can exploit known vulnerabilities in Express/Node if they see that your site is powered by Express. X-Powered-By: Express is sent in every request coming from Express by default. The `helmet.hidePoweredBy()` middleware will remove the X-Powered-By header. You can also explicitly set the header to something else, to throw people off. e.g. `app.use(helmet.hidePoweredBy({ setTo: 'PHP 4.2.0' }))` +如果黑客發現你的網站是用 Express 搭建的,那麼他們就可以利用 Express 或 Node 現存的漏洞來攻擊你的網站。 `X-Powered-By: Express` 默認在來自 Express 的每個請求中被髮送。 使用 `helmet.hidePoweredBy()` 中間件來移除 X-Powered-By 頭。 # --hints-- -helmet.hidePoweredBy() middleware should be mounted correctly +應正確地安裝 helmet.hidePoweredBy() 中間件 ```js (getUserInput) => diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/install-and-require-helmet.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/install-and-require-helmet.md index 0a58f1d597..49d5ede425 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/install-and-require-helmet.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/install-and-require-helmet.md @@ -1,6 +1,6 @@ --- id: 587d8247367417b2b2512c36 -title: Install and Require Helmet +title: 安裝和引入 Helmet challengeType: 2 forumTopicId: 301581 dashedName: install-and-require-helmet @@ -8,26 +8,33 @@ dashedName: install-and-require-helmet # --description-- -As a reminder, this project is being built upon the following starter project on [Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-infosec), or cloned from [GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/). +你可以採用下面的任意一種編寫代碼的方式來完成這些挑戰: -Helmet helps you secure your Express apps by setting various HTTP headers. +- 克隆 [這個 GitHub 倉庫](https://github.com/freeCodeCamp/boilerplate-infosec/) 並在本地完成這些挑戰。 +- 使用[我們在 Repl.it 上的初始化項目](https://replit.com/github/freeCodeCamp/boilerplate-infosec)來完成這些挑戰。 +- 使用你選擇的網站生成器來完成項目。 需要包含我們 GitHub 倉庫的所有文件。 + +完成本項目後,請將一個正常運行的 demo(項目演示)託管在可以公開訪問的平臺。 然後在 `Solution Link` 字段中提交它的 URL。 + +Helmet 通過設置各種 HTTP 頭來保護你的 Express 應用程序。 # --instructions-- -All your code for these lessons goes in the `myApp.js` file between the lines of code we have started you off with. Do not change or delete the code we have added for you. +你在這些課程中寫的所有代碼都在 `myApp.js` 文件中,在初始代碼之間。 不要改變或刪除我們爲你添加的代碼。 -Install Helmet version `3.21.3`, then require it. +安裝 Helmet 的 `3.21.3` 版本,然後引入它。 你可以用 `npm install --save-exact package@version` 來安裝一個特定版本的軟件包,或者直接將其添加到你的 `package.json` 中。 # --hints-- -`helmet` version `3.21.3` should be in `package.json` +`helmet` 版本 `3.21.3` 應該在 `package.json` 中。 ```js (getUserInput) => $.get(getUserInput('url') + '/_api/package.json').then( (data) => { - var packJson = JSON.parse(data); - assert(packJson.dependencies.helmet === '3.21.3'); + const packJson = JSON.parse(data); + const helmet = packJson.dependencies.helmet; + assert(helmet === '3.21.3' || helmet === '^3.21.3'); }, (xhr) => { throw new Error(xhr.responseText); diff --git a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/mitigate-the-risk-of-clickjacking-with-helmet.frameguard.md b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/mitigate-the-risk-of-clickjacking-with-helmet.frameguard.md index 1759d2e727..dcbf163ddd 100644 --- a/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/mitigate-the-risk-of-clickjacking-with-helmet.frameguard.md +++ b/curriculum/challenges/chinese-traditional/09-information-security/information-security-with-helmetjs/mitigate-the-risk-of-clickjacking-with-helmet.frameguard.md @@ -1,6 +1,6 @@ --- id: 587d8247367417b2b2512c38 -title: Mitigate the Risk of Clickjacking with helmet.frameguard() +title: 使用 helmet.frameguard() 降低點擊劫持的風險 challengeType: 2 forumTopicId: 301582 dashedName: mitigate-the-risk-of-clickjacking-with-helmet-frameguard @@ -8,19 +8,19 @@ dashedName: mitigate-the-risk-of-clickjacking-with-helmet-frameguard # --description-- -As a reminder, this project is being built upon the following starter project on [Repl.it](https://repl.it/github/freeCodeCamp/boilerplate-infosec), or cloned from [GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/). +請注意,本項目在 [這個 Repl.it 項目](https://replit.com/github/freeCodeCamp/boilerplate-infosec) 的基礎上進行開發。 你也可以從 [GitHub](https://github.com/freeCodeCamp/boilerplate-infosec/) 上克隆。 -Your page could be put in a `` or `