OpenSource-Hub

freeCodeCamp

튜토리얼

freeCodeCamp/freeCodeCamp

freeCodeCamp 오픈 소스 프로그래밍 학습 플랫폼, 무료로 프로그래밍과 수학을 배우세요.

개요

freeCodeCamp은 기부로 운영되는 비영리 프로그래밍 학습 플랫폼으로, 웹 개발부터 데이터 과학까지 전체 과정을 제공합니다. 인터랙티브 챌린지, 실전 프로젝트 및 자격 인증 시험을 포함하며, 커뮤니티 주도로 운영되어 수십만 명이 기술 업계에 진출하는 데 도움을 주었습니다.

README 미리보기

[](https://www.freecodecamp.org/)\n\n[](https://www.firsttimersonly.com/)\n[](https://discord.gg/PRyKn3Vbay)\n[](https://insights.linuxfoundation.org/project/freecodecamp/repository/freecodecamp-freecodecamp)\n\n## freeCodeCamp.org's open-source codebase and curriculum\n\n[freeCodeCamp.org](https://www.freecodecamp.org) is a friendly community where you can learn to code for free. It is run by a [donor-supported 501(c)(3) charity](https://www.freecodecamp.org/donate) to help millions of busy adults transition into tech. Our community has already helped more than 100,000 people get their first developer job.\n\nOur full-stack web development and machine learning curriculum is completely free and self-paced. We have thousands of interactive coding challenges to help you expand your skills.\n\n## Table of Contents\n\n- [Certifications](#certifications)\n- [The Learning Platform](#the-learning-platform)\n- [Reporting Bugs and Issues](#reporting-bugs-and-issues)\n- [Reporting Security Issues and Responsible Disclosure](#reporting-security-issues-and-responsible-disclosure)\n- [Contributing](#contributing)\n- [Platform, Build and Deployment Status](#platform-build-and-deployment-status)\n- [License](#license)\n\n### Certifications\n\nfreeCodeCamp.org offers several free developer certifications that make up the [Full-Stack Developer Curriculum](https://www.freecodecamp.org/learn/full-stack-developer-v9/):\n\n- [Responsive Web Design](https://www.freecodecamp.org/learn/responsive-web-design-v9/)\n- [JavaScript](https://www.freecodecamp.org/learn/javascript-v9/)\n- [Front-End Development Libraries](https://www.freecodecamp.org/learn/front-end-development-libraries-v9/)\n- [Python](https://www.freecodecamp.org/learn/python-v9/)\n- [Relational Databases](https://www.freecodecamp.org/learn/relational-databases-v9/)\n- [Back-End Development and APIs](https://www.freecodecamp.org/learn/back-end-development-and-apis-v9/)\n\nEach of these certifications involves completing interac

FAQ (5)

문제 해결
The check in that step expects the idiomatic negated form, `not isinstance(dictionary, dict)`, rather than an explicit comparison to `False`. Two things are going on: 1. **The automated test matches a specific pattern.** Step-by-step validators like this typically scan your code (often with a regex) for the construct taught in the instructions — in this case, `not isinstance(...)`. Even though `isinstance(dictionary, dict) == False` is functionally correct, it doesn't match the expected pattern, so the step fails. 2. **`== False` is redundant and unpythonic.** `isinstance()` already returns a real `bool`, so comparing it to `False` adds nothing. PEP 8 (and linters, e.g., flake8 rule E712) recommend negating directly: ```python if not isinstance(dictionary, dict): raise TypeError("...") # whatever message the step requires ``` Swap your condition for the `not isinstance(...)` form, keep the rest of the block (the `TypeError` with the exact message the step specifies), and the step should pass.

Step 9 테스트는 현재 조건에서 not isinstance(dictionary, dict)를 사용할 것으로 예상합니다. Boolean 결과를 False와 비교하는 것은 논리적으로 동등하지만, 허용되는 테스트 패턴과 일치하지 않습니다. 조건을 다음과 같이 변경하세요:

if not isinstance(dictionary, dict):
    print(f'Invalid format: expected a dictionary at position {index}.')
    is_invalid = True

이렇게 하면 동일하게 dictionary가 아닌 값을 감지하고 Step 9 테스트를 통과합니다. 동등한 타입 검사 표현식도 허용하도록 커리큘럼 수정이 제안되었습니다.

원본 Issue #70800
문제 해결
Python에서 input()을 정수로 변환할 때 발생하는 "IndexError: string index out of range" 및 ValueError를 수정하는 방법

Python 시퀀스는 0부터 인덱싱됩니다. "hello world"는 인덱스 0부터 10까지 11개의 문자를 가지고 있으며, 인덱스 11은 이미 끝을 벗어난 것이므로 greet[11]은 IndexError: string index out of range를 발생시킵니다. 마지막 문자에는 greet[-1]을, 그 인덱스에는 len(greet) - 1을 사용하세요.

또한 input()은 항상 문자열을 반환합니다. 이 오류는 문자나 빈 값을 입력하는 경우처럼 해당 문자열을 int()로 변환할 수 없을 때만 발생합니다. try/except로 처리하세요:

greet = "hello world"
print(greet[10])   # d
print(greet[-1])   # d

try:
    number = int(input("Enter a number: "))
except ValueError:
    print("Please enter a valid integer!")

원본 Issue #70748
문제 해결
freeCodeCamp Implement a Stack 테스트에서 함수가 LIFO를 따르는데도 argument 또는 collection-order 테스트가 실패하는 경우 어떻게 수정해야 하나요?

테스트는 스택 연산을 독립 함수로 호출합니다. initStack()이 반환하는 스택 객체는 첫 번째 인수로 전달되며, push는 새 요소를 두 번째 인수로도 받습니다. 항목은 stack.collection에 저장하며, 배열의 마지막 요소가 스택의 맨 위로 간주됩니다.

구현 예시:

function initStack() {
  return { collection: [] };
}

function push(stack, element) {
  stack.collection.push(element);
}

function pop(stack) {
  return stack.collection.pop();
}

function peek(stack) {
  return stack.collection[stack.collection.length - 1];
}

function isEmpty(stack) {
  return stack.collection.length === 0;
}

function clear(stack) {
  stack.collection.length = 0;
}

push(stack, 'first')와 push(stack, 'second')를 실행한 후에는 테스트에서 stack.collection이 ['first', 'second']와 같을 것으로 기대합니다. unshift()/shift()를 사용해 인덱스 0에서 항목을 추가하거나 제거하지 마세요. 원래 사용자 스토리에는 이러한 호출 규칙과 컬렉션 순서 요구 사항이 누락되어 있었으며, 풀 리퀘스트에서 지침을 업데이트합니다.

원본 Issue #70686
문제 해결
왜 freeCodeCamp 백엔드 과정 컨테이너가 bash '$\r': command not found 오류와 함께 'Preparing the course'에서 멈춰 있나요?

이 오류는 Windows(WSL 외부)에서 리포지토리를 클론할 때 Windows 스타일의 CRLF(\r) 줄 바꿈 문자가 ./bash/sourcerer.sh와 ./bash/.bashrc에 추가되어 발생합니다. 리포지토리 파일 자체는 LF 줄 바꿈을 사용하므로, 이는 로컬 Git 설정 문제입니다. 해결 방법:

1. Git이 줄 바꿈을 변환하지 않도록 설정한 후 리포지토리를 다시 클론합니다:

git config --global core.autocrlf false

그런 다음 back-end-development-and-apis 디렉터리를 삭제하고 다시 클론합니다.

2. 또는 컨테이너 안에서 해당 파일의 캐리지 리턴을 제거합니다:

sed -i 's/\r$//' ./bash/sourcerer.sh ./bash/.bashrc

sed -n 'l' ./bash/sourcerer.sh로 보이지 않는 문자를 확인할 수 있습니다. 줄 바꿈을 수정한 후 freeCodeCamp: Run Course 명령을 다시 실행하면 코스가 정상적으로 로드됩니다. Windows에서 개발하는 경우 WSL 안에서 작업하면 이 문제를 완전히 피할 수 있습니다.

원본 Issue #71378
informational
웹사이트의 브레드크럼은 사이트 계층 구조를 기반으로 하나요, 아니면 사용자의 탐색 기록을 기반으로 하나요?

freeCodeCamp 레슨의 브레드크럼은 사용자의 실제 이동 경로가 아니라 사이트 계층 구조에서 페이지의 위치를 나타냅니다. 예를 들어, Home / Electronics / Phones / Smartphone XYZ는 해당 페이지들이 사이트 구조의 상위 섹션임을 의미하며, 검색을 통해 직접 도착한 사용자에게도 동일한 경로가 표시되어야 합니다. 브레드크럼 링크를 반드시 "이전에 방문한 페이지"라고 설명해서는 안 됩니다. 실제 이동한 경로를 추적하는 히스토리 기반 브레드크럼은 별도의 덜 일반적인 패턴이며, 그에 맞게 명시적으로 표시해야 합니다. 주 내비게이션 링크는 중첩된 카테고리로 가는 바로 가기일 수 있으므로 최상위 계층 수준에만 해당할 필요는 없습니다. W3C ARIA 브레드크럼 패턴을 따르고, 계층적 경로에 <nav aria-label="Breadcrumb">와 같은 전용 <nav> 요소를 사용하세요.

원본 Issue #70779