diff --git a/quiz-app/src/App.vue b/quiz-app/src/App.vue index 19bc4e5e..fccea981 100644 --- a/quiz-app/src/App.vue +++ b/quiz-app/src/App.vue @@ -5,6 +5,8 @@ diff --git a/quiz-app/src/assets/translations/index.js b/quiz-app/src/assets/translations/index.js index cdf9fbff..fea1b4d3 100644 --- a/quiz-app/src/assets/translations/index.js +++ b/quiz-app/src/assets/translations/index.js @@ -1,6 +1,7 @@ // index.js import en from './en.json'; import fr from './fr.json'; +import ko from './ko.json'; import id from './id.json'; //export const defaultLocale = 'en'; @@ -8,6 +9,7 @@ import id from './id.json'; const messages = { en: en[0], fr: fr[0], + ko: ko[0], id: id[0], }; diff --git a/quiz-app/src/assets/translations/ko.json b/quiz-app/src/assets/translations/ko.json new file mode 100644 index 00000000..ef8cdc1d --- /dev/null +++ b/quiz-app/src/assets/translations/ko.json @@ -0,0 +1,2509 @@ +[ + { + "title": "비기너를 위한 웹 개발: 퀴즈", + "complete": "축하합니다! 퀴즈를 완료하셨습니다.!", + "error": "죄송해요, 다시 시도해주세요.", + "quizzes": [ + { + "id": 1, + "title": "Lesson 1 - 프로그래밍 언어 소개: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "생산자의 코드작성 없이 프로그램이 만들어질 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "저수준 언어는 어떤 것을 만드는데 인기있는 선택지일까?", + "answerOptions": [ + { + "answerText": "웹사이트", + "isCorrect": "false" + }, + { + "answerText": "하드웨어", + "isCorrect": "true" + }, + { + "answerText": "비디오 게임 소프트웨어", + "isCorrect": "false" + } + ] + }, + { + "questionText": "아래의 도구들 중 웹 개발자 환경으로 가장 적합한 것은", + "answerOptions": [ + { + "answerText": "라즈베리 파이 같은 하드웨어", + "isCorrect": "false" + }, + { + "answerText": "브라우저 개발자 도구", + "isCorrect": "true" + }, + { + "answerText": "운영체제 설명서", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 2, + "title": "Lesson 1 - 프로그래밍 언어 소개: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "어떤 언어로 웹사이트를 만들 것인가?", + "answerOptions": [ + { + "answerText": "기계어", + "isCorrect": "false" + }, + { + "answerText": "JavaScript", + "isCorrect": "true" + }, + { + "answerText": "Bash", + "isCorrect": "false" + } + ] + }, + { + "questionText": "개발 환경은 개발자 마다 고유하다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "버그가 있는 코드를 고치기위해 개발자는 어떤 것을 하게되는가?", + "answerOptions": [ + { + "answerText": "구문 강조 (Syntax highlighting)", + "isCorrect": "false" + }, + { + "answerText": "디버깅 (Debugging)", + "isCorrect": "true" + }, + { + "answerText": "코드 포맷팅 (Code formatting)", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 3, + "title": "Lesson 2 - GitHub 소개: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "어떤 명령어로 Git 레포지토리를 만드는가?", + "answerOptions": [ + { + "answerText": "git create", + "isCorrect": "false" + }, + { + "answerText": "git start", + "isCorrect": "false" + }, + { + "answerText": "git init", + "isCorrect": "true" + } + ] + }, + { + "questionText": "`git add`는 어떤 동작을 하는 것인가?", + "answerOptions": [ + { + "answerText": "코드 커밋", + "isCorrect": "false" + }, + { + "answerText": "추적을 위해 staging 영역으로 파일을 추가", + "isCorrect": "true" + }, + { + "answerText": "Github에 파일을 추가", + "isCorrect": "false" + } + ] + }, + { + "questionText": "git이 본인 컴퓨터에 설치되어 있는지 어떻게 확인하는가?", + "answerOptions": [ + { + "answerText": "`git --version` 입력", + "isCorrect": "true" + }, + { + "answerText": "`git --installed` 입력", + "isCorrect": "false" + }, + { + "answerText": "`git --init` 입력", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 4, + "title": "Lesson 2 - GitHub 소개: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "브랜치로부터 변경점을 토론하고 비교할수 있는 공간은? (리뷰, 코멘트, 통합 테스트 등을 할수 있음)", + "answerOptions": [ + { + "answerText": "GitHub", + "isCorrect": "false" + }, + { + "answerText": "A Pull Request (PR, 풀리퀘스트)", + "isCorrect": "true" + }, + { + "answerText": "A feature branch (기능 브랜치)", + "isCorrect": "false" + } + ] + }, + { + "questionText": "원격 브랜치로부터 모든 커밋을 가져올 수 있는 커맨드는?", + "answerOptions": [ + { + "answerText": "git fetch", + "isCorrect": "false" + }, + { + "answerText": "git pull", + "isCorrect": "true" + }, + { + "answerText": "git commits -r", + "isCorrect": "false" + } + ] + }, + { + "questionText": "브랜치를 전환하는 커맨드는?", + "answerOptions": [ + { + "answerText": "git switch [브랜치-이름]", + "isCorrect": "false" + }, + { + "answerText": "git checkout [브랜치-이름]", + "isCorrect": "true" + }, + { + "answerText": "git load [브랜치-이름]", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 5, + "title": "Lesson 3 - 접근 가능한 웹 페이지 생성하기: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "접근가능한 웹사이트는 어떤 툴로 점검할 수 있을까?", + "answerOptions": [ + { + "answerText": "Lighthouse", + "isCorrect": "true" + }, + { + "answerText": "Deckhouse", + "isCorrect": "false" + }, + { + "answerText": "Cleanhouse", + "isCorrect": "true" + } + ] + }, + { + "questionText": "시각 장앤 유저들을 위한 접근성 테스트 용으로 스크린 리더가 필요하다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "접근성은 정보성 웹사이트에서만 중요하다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 6, + "title": "Lesson 3 - 접근 가능한 웹 페이지 생성하기: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "Lighthouse 는 접근성 문제만 점검한다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "칼러 세이프 팔레트(Color-safe palettes)는 어떤 사람을 도울 수 있는가?", + "answerOptions": [ + { + "answerText": "색망", + "isCorrect": "false" + }, + { + "answerText": "시각 장애", + "isCorrect": "false" + }, + { + "answerText": "둘다", + "isCorrect": "true" + } + ] + }, + { + "questionText": "설명 링크는 접근가능한 웹 사이트에 필수적인 요소이다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 7, + "title": "Lesson 4 - JavaScript 기초 - 데이터 타입: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "불리언 타입은 문자열의 길이를 구하는데 쓸 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "문자열에 사용할 수 있는 연산은?", + "answerOptions": [ + { + "answerText": "concatenation", + "isCorrect": "true" + }, + { + "answerText": "appending", + "isCorrect": "false" + }, + { + "answerText": "splicing", + "isCorrect": "false" + } + ] + }, + { + "questionText": "== 와 === 는 서로 교체가능하다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 8, + "title": "Lesson 4 - JavaScript 기초 - 데이터 타입: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "상수(const)는 다음을 제외하고 변수를 선언 시 let과 var과 같다.", + "answerOptions": [ + { + "answerText": "반드시 초기화되어야 한다", + "isCorrect": "true" + }, + { + "answerText": "변경 가능하다", + "isCorrect": "false" + }, + { + "answerText": "재할당 가능하다", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Numbers(숫자) 와 ____ 는 숫자 데이터를 다루는 JavaScript 원시 타입이다.", + "answerOptions": [ + { + "answerText": "bigint", + "isCorrect": "true" + }, + { + "answerText": "boolean", + "isCorrect": "false" + }, + { + "answerText": "star", + "isCorrect": "false" + } + ] + }, + { + "questionText": "문자열은 작은 따옴표와 큰 따옴표 사이에 있을 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 9, + "title": "Lesson 5 - JavaScript 기초 - 메소드와 함수: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "아규먼트란?", + "answerOptions": [ + { + "answerText": "함수 정의내 선언되는 것", + "isCorrect": "false" + }, + { + "answerText": "함수 실행 시 함수로 전달되는 것", + "isCorrect": "true" + }, + { + "answerText": "아는 사람들과 같이 가지고 있는 것", + "isCorrect": "false" + } + ] + }, + { + "questionText": "함수는 꼭 무언가를 리턴해야한다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "함수이름은 어떤 이름이든 될 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "false" + }, + { + "answerText": "네, 하지만 설명적인 이름이어야 한다.", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 10, + "title": "Lesson 5 - JavaScript 기초 - 메소드와 함수: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "아규먼트는 반드시 함수에 모든 파라미터가 제공되어야 한다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "기본 값은 어떤 것을 하는 것인가?", + "answerOptions": [ + { + "answerText": "올바른 값을 지정하는 것", + "isCorrect": "false" + }, + { + "answerText": "파라미터의 시작 값을 주는 것, 그래서 아규먼트가 빠져 있을 때도 코드가 동작할 수 있다.", + "isCorrect": "true" + }, + { + "answerText": "쓸모없음", + "isCorrect": "false" + } + ] + }, + { + "questionText": "fat arrow(=>) 함수는 다음을 제공한다.", + "answerOptions": [ + { + "answerText": "무거운 함수를 만드는 것", + "isCorrect": "false" + }, + { + "answerText": "`function` 키워드를 생략하는 것", + "isCorrect": "true" + }, + { + "answerText": "익명 함수를 만드는 것", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 11, + "title": "Lesson 6 - JavaScript 기초 - 결정하기: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "== 연산자는 다음과 같이 불린다.", + "answerOptions": [ + { + "answerText": "동등 (Euqaility)", + "isCorrect": "true" + }, + { + "answerText": "일치 (Strict equality)", + "isCorrect": "false" + }, + { + "answerText": "할당 (Assignment)", + "isCorrect": "false" + } + ] + }, + { + "questionText": "JavaScript 비교는 어떤 타입을 리턴하는가?", + "answerOptions": [ + { + "answerText": "불리언", + "isCorrect": "true" + }, + { + "answerText": "null", + "isCorrect": "false" + }, + { + "answerText": "문자열", + "isCorrect": "false" + } + ] + }, + { + "questionText": "JavaScript의 ! 심볼은 다음을 의미한다.", + "answerOptions": [ + { + "answerText": "논리 Not", + "isCorrect": "true" + }, + { + "answerText": "중요", + "isCorrect": "false" + }, + { + "answerText": "동등", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 12, + "title": "Lesson 6 - JavaScript 기초 - 결정하기: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "다음 코드는 무엇을 리턴하는가: '1' == 1", + "answerOptions": [ + { + "answerText": "true", + "isCorrect": "true" + }, + { + "answerText": "false", + "isCorrect": "false" + }, + { + "answerText": "null", + "isCorrect": "false" + } + ] + }, + { + "questionText": "다음 코드는 무엇을 리턴하는가: '1' === 1", + "answerOptions": [ + { + "answerText": "true", + "isCorrect": "false" + }, + { + "answerText": "false", + "isCorrect": "true" + }, + { + "answerText": "null", + "isCorrect": "false" + } + ] + }, + { + "questionText": "'or' 로직을 표현하는 연산자를 고르시오.", + "answerOptions": [ + { + "answerText": "a | b", + "isCorrect": "false" + }, + { + "answerText": "a || b", + "isCorrect": "true" + }, + { + "answerText": "a or b", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 13, + "title": "Lesson 7 - JavaScript 기초 - 배열과 반복: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "배열의 특정 항목을 참조하려면, 어떤 것을 쓸 것인가?", + "answerOptions": [ + { + "answerText": "대괄호 []", + "isCorrect": "false" + }, + { + "answerText": "인덱스 (index)", + "isCorrect": "true" + }, + { + "answerText": "중괄호 {}", + "isCorrect": "false" + } + ] + }, + { + "questionText": "배열의 항목 개수는 어떻게 알아낼 수 있는가?", + "answerOptions": [ + { + "answerText": "'len(array)' 메소드", + "isCorrect": "false" + }, + { + "answerText": "배열의 속성 사이즈", + "isCorrect": "false" + }, + { + "answerText": "배열의 속성 길이", + "isCorrect": "true" + } + ] + }, + { + "questionText": "JavaScript에서 인덱스 값은 무엇으로 시작되는가?", + "answerOptions": [ + { + "answerText": "0", + "isCorrect": "true" + }, + { + "answerText": "1", + "isCorrect": "false" + }, + { + "answerText": "2", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 14, + "title": "Lesson 7 - JavaScript 기초 - 배열과 반복: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "for-loop에서 반복 횟수를 5회 늘이려면 어떤부분을 수정해야 하는가?", + "answerOptions": [ + { + "answerText": "조건", + "isCorrect": "true" + }, + { + "answerText": "카운터", + "isCorrect": "false" + }, + { + "answerText": "반복-표현식", + "isCorrect": "false" + } + ] + }, + { + "questionText": "while과 for-loop의 차이는?", + "answerOptions": [ + { + "answerText": "for-loop에는 카운터와 반복-표현식이 있는 반면, while에는 오직 조건만 있다.", + "isCorrect": "true" + }, + { + "answerText": "while에는 카운터와 반복-표현식이 있는 반면, for-loop 오직 조건만 있다", + "isCorrect": "false" + }, + { + "answerText": "둘다 같다, 별칭만 다를 뿐이다.", + "isCorrect": "false" + } + ] + }, + { + "questionText": "해당 코드 (let i=1; i < 5; i++) 에서 몇 번의 반복이 수행되는가?", + "answerOptions": [ + { + "answerText": "5", + "isCorrect": "false" + }, + { + "answerText": "4", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 15, + "title": "Lesson 8 - Terrarium 프로젝트 - HTML 소개: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "HTML은 'HyperText Mockup Language'를 의미한다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "모든 HTML 태그는 열고 닫는 태그 둘다 필요하다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "시맨틱 마크업을 사요하는 것은 다음에 가장 중요하다.", + "answerOptions": [ + { + "answerText": "코드 가독성", + "isCorrect": "false" + }, + { + "answerText": "스크린 리더", + "isCorrect": "true" + }, + { + "answerText": "유지보수", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 16, + "title": "Lesson 8 - Terrarium 프로젝트 - HTML 소개: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "span 과 div 는 서로 교체가능하다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "HTML문서의 head 에는 다음이 포함 가능하다.", + "answerOptions": [ + { + "answerText": "title 태그", + "isCorrect": "false" + }, + { + "answerText": "metadata", + "isCorrect": "false" + }, + { + "answerText": "위 둘다", + "isCorrect": "true" + } + ] + }, + { + "questionText": "제외된 태그들은 마크업에 사용할 수 없다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "false" + }, + { + "answerText": "아니요, 하지만 제외된 데에는 좋은 이유가 있다.", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 17, + "title": "Lesson 9 - Terrarium 프로젝트 - CSS 소개: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "HTML 요소에 스타일을 지정하려면 클래스나 id는 반드시 가지고 있어야한다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "CSS는 'Complete Style Sheets'를 의미한다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "CSS는 애니메이션을 만드는 데 쓰일 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 18, + "title": "Lesson 9 - Terrarium 프로젝트 - CSS 소개: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "HTML 파일의 head 섹션에 CSS를 바로 적을 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "CSS는 앱에서 항상 필수적이다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "false" + }, + { + "answerText": "아니요, 하지만 보기 좋게 만드려면 CSS 가 필요할 것이다.", + "isCorrect": "true" + } + ] + }, + { + "questionText": "어떤 브라우저 툴이 CSS를 감지합니까?", + "answerOptions": [ + { + "answerText": "Elements", + "isCorrect": "false" + }, + { + "answerText": "Styles", + "isCorrect": "true" + }, + { + "answerText": "Network", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 19, + "title": "Lesson 10 - Terrarium 프로젝트 - DOM 조작과 클로저: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "DOM은 'Document Object Management'를 의미한다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "DOM은 tree 형태로 여겨질 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Web API를 사용해서 DOM을 조작할 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 20, + "title": "Lesson 10 - Terrarium 프로젝트 - DOM 조작과 클로저: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "DOM은 웹에서 문서를 표현하기 위한 모델이다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "다음을 수행하기 위해 JavaScript 클로저를 사용해야 한다.", + "answerOptions": [ + { + "answerText": "함수 내 함수 작성", + "isCorrect": "true" + }, + { + "answerText": "DOM 을 둘러싸기", + "isCorrect": "false" + }, + { + "answerText": "스크립트 블럭 닫기", + "isCorrect": "false" + } + ] + }, + { + "questionText": "빈칸 채우기: 클로저는 하나 혹은 여러 함수가 함수 밖 ___을(를) 접근하는데 유용하다.", + "answerOptions": [ + { + "answerText": "배열", + "isCorrect": "false" + }, + { + "answerText": "범위", + "isCorrect": "true" + }, + { + "answerText": "함수", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 21, + "title": "Lesson 11 - 타이핑 게임: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "이벤트-주도 프로그래밍은 사용자가 ___ 하는 경우에 사용된다.", + "answerOptions": [ + { + "answerText": "버튼 클릭", + "isCorrect": "false" + }, + { + "answerText": "값 변경", + "isCorrect": "false" + }, + { + "answerText": "페이지 상호작용", + "isCorrect": "false" + }, + { + "answerText": "위 모든 경우", + "isCorrect": "true" + } + ] + }, + { + "questionText": "절차형 프로그래밍에서 함수는 ___ 불려진다.", + "answerOptions": [ + { + "answerText": "언제든", + "isCorrect": "false" + }, + { + "answerText": "특정 순서대로", + "isCorrect": "true" + }, + { + "answerText": "왼쪽에서 오른쪽으로", + "isCorrect": "false" + } + ] + }, + { + "questionText": "이벤트 핸들러에 등록되기 위해 돔에서 제공하는 메소드는?", + "answerOptions": [ + { + "answerText": "addEventListener", + "isCorrect": "true" + }, + { + "answerText": "addListener", + "isCorrect": "false" + }, + { + "answerText": "addEvent", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 22, + "title": "Lesson 11 - 타이핑 게임: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "유저가 페이지서 하는 거의 모든것은 이벤트를 발생시킨다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "일반적인 이벤트는 다음을 포함한다.", + "answerOptions": [ + { + "answerText": "클릭 이벤트", + "isCorrect": "false" + }, + { + "answerText": "선택 이벤트", + "isCorrect": "false" + }, + { + "answerText": "입력 이벤트", + "isCorrect": "false" + }, + { + "answerText": "위 모든 경우", + "isCorrect": "true" + } + ] + }, + { + "questionText": "익명 함수를 이벤트 핸들러를 만드는데 사용할 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 23, + "title": "Lesson 12 - 브라우저 확장 프로젝트 - 브라우저에 대한 모든 것: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "브라우저 확장 프로그램은 어디로부터 얻을 수 있는가?", + "answerOptions": [ + { + "answerText": "월마트", + "isCorrect": "false" + }, + { + "answerText": "브라우저의 확장 프로그램 스토어", + "isCorrect": "true" + }, + { + "answerText": "앱 스토어", + "isCorrect": "false" + } + ] + }, + { + "questionText": "NPM 은 다음을 의미한다.", + "answerOptions": [ + { + "answerText": "Node Package Manager", + "isCorrect": "true" + }, + { + "answerText": "Netscape Primary Mix", + "isCorrect": "false" + }, + { + "answerText": "Natural Processing Manager", + "isCorrect": "false" + } + ] + }, + { + "questionText": "브라우저는 웹페이지를 안정하게도, 불안정하게도 제공할 수 있다. (둘 다 가능)", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 24, + "title": "Lesson 12 - 브라우저 확장 프로젝트 - 브라우저에 대한 모든 것: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "World Wide Web 은 누가 발명했는가?", + "answerOptions": [ + { + "answerText": "Tom Barnard-Loft", + "isCorrect": "false" + }, + { + "answerText": "Tim Berners-Lee", + "isCorrect": "true" + }, + { + "answerText": "Trish Berth-Pool", + "isCorrect": "false" + } + ] + }, + { + "questionText": "첫 번째 브라우저는 어떻게 불렸는가?", + "answerOptions": [ + { + "answerText": "WorldWideWeb", + "isCorrect": "true" + }, + { + "answerText": "Mozilla", + "isCorrect": "false" + }, + { + "answerText": "Netscape", + "isCorrect": "false" + } + ] + }, + { + "questionText": "브라우저는 사용자의 검색 기록을 저장할 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 25, + "title": "Lesson 13 - 브라우저 확장 프로젝트 - 로컬 저장소를 사용한 API 호출: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "API는 다음을 의미한다.", + "answerOptions": [ + { + "answerText": "Application Programming Interfaces", + "isCorrect": "true" + }, + { + "answerText": "A Programming Inference", + "isCorrect": "false" + }, + { + "answerText": "Anti Proven Intentions", + "isCorrect": "false" + } + ] + }, + { + "questionText": "API는 다음과 상호작용하기 위해 사용해야 한다.", + "answerOptions": [ + { + "answerText": "웹으로 연결된 다른 에셋", + "isCorrect": "false" + }, + { + "answerText": "데이터베이스", + "isCorrect": "false" + }, + { + "answerText": "위의 둘 다", + "isCorrect": "true" + } + ] + }, + { + "questionText": "누구든 API를 만들 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 26, + "title": "Lesson 13 - 브라우저 확장 프로젝트 - 로컬 저장소를 사용한 API 호출: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "로컬 스토리지는 브라우저 윈도를 닫을 때 마다 비워진다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "메인 브라우저 윈도우는 브라우저 확장 프로그램의 로컬 스토리지를 컨트롤한다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "API에서의 REST는 다음을 의미한다.", + "answerOptions": [ + { + "answerText": "Representational State Transfer", + "isCorrect": "true" + }, + { + "answerText": "Returning State Tasks", + "isCorrect": "false" + }, + { + "answerText": "Rendering State To Browser", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 27, + "title": "Lesson 14 - 브라우저 확장 프로젝트 - 백그라운드 작업과 성능 학습: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "웹 앱의 성능을 다음을 이용하여 테스트할 수 있다.", + "answerOptions": [ + { + "answerText": "브라우저 툴 사용", + "isCorrect": "true" + }, + { + "answerText": "분리된 소프트웨어 패키지를 사용", + "isCorrect": "false" + }, + { + "answerText": "매뉴얼대로", + "isCorrect": "false" + } + ] + }, + { + "questionText": "웹 사이트의 '성능' 은 다음을 분석하는 것을 의미한다.", + "answerOptions": [ + { + "answerText": "얼마나 빨리 로드되는지", + "isCorrect": "false" + }, + { + "answerText": "코드가 얼마나 빨리 동작하는지", + "isCorrect": "false" + }, + { + "answerText": "위의 둘 다", + "isCorrect": "true" + } + ] + }, + { + "questionText": "전반적으로, 웹 페이지의 '무게'는 과거 몇년간 다음과 같이 변화였다.", + "answerOptions": [ + { + "answerText": "가벼워졌다.", + "isCorrect": "false" + }, + { + "answerText": "무거워졌다.", + "isCorrect": "true" + }, + { + "answerText": "그대로다.", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 28, + "title": "Lesson 14 - 브라우저 확장 프로젝트 - 백그라운드 작업과 성능 학습: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "사이트의 성능을 잘 확인하려면, 캐시를 비우고 프로파일러에서 다시 로드해야한다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "브라우저 확장 프로그램은 기본적으로 실행된다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "성능 병목을 확인하려면 다음을 분석해야한다.", + "answerOptions": [ + { + "answerText": "DOM 순회", + "isCorrect": "false" + }, + { + "answerText": "JavaScript 최적화", + "isCorrect": "false" + }, + { + "answerText": "자원 관리", + "isCorrect": "false" + }, + { + "answerText": "위 모두", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 29, + "title": "Lesson 15 - 스페이스 게임 - 소개: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "JavaScript는 게임을 만드는데 인기가 없다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Pub/Sub은 게임 자원과 진행 흐름을 관리하는데 선호되는 패턴이다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "객체 상속은 클래스나 구성(Composition)에 의해 다뤄진다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 30, + "title": "Lesson 15 - 스페이스 게임 - 소개: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "클래스는 행동에 중점을 두는 상속에 의존한다.", + "answerOptions": [ + { + "answerText": "true", + "isCorrect": "true" + }, + { + "answerText": "false", + "isCorrect": "false" + } + ] + }, + { + "questionText": "구성(Composition)은 게임 객체들을 다루는데 선호되는 디자인 패턴이다.", + "answerOptions": [ + { + "answerText": "true", + "isCorrect": "false" + }, + { + "answerText": "false", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Pub/Sub 은 다음을 의미한다:", + "answerOptions": [ + { + "answerText": "Publish/Subscribe", + "isCorrect": "true" + }, + { + "answerText": "Print/Staple", + "isCorrect": "false" + }, + { + "answerText": "Publish/Sanitize", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 31, + "title": "Lesson 16 - 스페이스 게임 - Canvas에 영웅과 몬스터 그리기: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "Canvas 요소는 스크린에 그릴때 사용하는 것이다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Canvas API를 사용하여 단순한 기하학적인 모양만 만들 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "0,0 좌표는 왼쪽 아래를 가르킨다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 32, + "title": "Lesson 16 - 스페이스 게임 - Canvas에 영웅과 몬스터 그리기: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "Canvas에 직접적으로 그리기 연산을 수행할 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "비동기적으로 이미지가 로드되는 것을 알기위해 onload 이벤트를 등록해야한다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "스크린에 이미지를 그리라는 연산은?", + "answerOptions": [ + { + "answerText": "paintImage()", + "isCorrect": "false" + }, + { + "answerText": "drawImage()", + "isCorrect": "true" + }, + { + "answerText": "draw()", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 33, + "title": "Lesson 17 - 스페이스 게임 - 모션 추가하기: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "스크린의 어떤 오브젝트든지 키보드 이벤트를 받을 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "키 이벤트와 마우스 이벤트를 감지하는 것은 같은 메소드를 사용하여 가능하다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "일정 간격으로 어떤 일이 일어나게 하려면, 어떤 함수를 사용해야 하는가?", + "answerOptions": [ + { + "answerText": "setInterval()", + "isCorrect": "true" + }, + { + "answerText": "setTimeout()", + "isCorrect": "false" + }, + { + "answerText": "sleep()", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 34, + "title": "Lesson 17 - 스페이스 게임 - 모션 추가하기: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "항상 스크린을 다시 그려야한다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "게임 루프란?", + "answerOptions": [ + { + "answerText": "게임이 다시 시작될 수 있음을 보장되는 함수", + "isCorrect": "false" + }, + { + "answerText": "게임이 얼마나 빨리 동작되는지 결정하는 함수", + "isCorrect": "false" + }, + { + "answerText": "일정 간격으로 실행되며, 유저에게 보여지는 것을 그리는 함수", + "isCorrect": "true" + } + ] + }, + { + "questionText": "스크린을 다시 그리는 좋은 경우는?", + "answerOptions": [ + { + "answerText": "유저 상호작용이 발생했을 때", + "isCorrect": "false" + }, + { + "answerText": "무언가 이동되었을 때", + "isCorrect": "true" + }, + { + "answerText": "시간이 지났을 때", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 35, + "title": "Lesson 18 - 스페이스 게임 - 레이저 추가 및 충돌 감지하기: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "충돌 감지는 두 물체가 충돌 했는 것을 감지하는 방법을 나타낸다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "화면에서 어떻게 한 항목을 지우는가?", + "answerOptions": [ + { + "answerText": "가비지 컬렉터를 호출한다.", + "isCorrect": "false" + }, + { + "answerText": "죽었다고 표시만 하고, 다음 화면을 그릴때 살아있는 객체만 그린다.", + "isCorrect": "true" + }, + { + "answerText": "음수 좌표에 해당 항목을 배치한다.", + "isCorrect": "false" + } + ] + }, + { + "questionText": "JavaScript에서 레이저 쏘는 것을 보여주는 좋은 방법은?", + "answerOptions": [ + { + "answerText": "키 이벤트에 반응하는 비주얼 요소를 만든다.", + "isCorrect": "true" + }, + { + "answerText": "움직이는 gif를 만든다.", + "isCorrect": "false" + }, + { + "answerText": "간격을 두고 적들을 폭발시킨다.", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 36, + "title": "Lesson 18 - 스페이스 게임 - 레이저 추가 및 충돌 감지하기: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "충돌 감지는 어떻게 이루어지는가?", + "answerOptions": [ + { + "answerText": "두 원이 교차하는지 비교해서", + "isCorrect": "false" + }, + { + "answerText": "두 사각형이 교차하는지 비교해서", + "isCorrect": "true" + }, + { + "answerText": "두 점의 거리를 비교해서", + "isCorrect": "false" + } + ] + }, + { + "questionText": "쿨다운 효과를 구현하는 이유는?", + "answerOptions": [ + { + "answerText": "레이저를 반복적으로 발사하여 적들을 파괴할 수 없어, 게임을 더 어렵게 만들기 위함이다.", + "isCorrect": "false" + }, + { + "answerText": "JavaScript는 각 시간 단위에 특정 숫자의 이벤트만 생산할 수 있어, 이벤트를 제한해야 하기 때문이다.", + "isCorrect": "true" + } + ] + }, + { + "questionText": "상수는 코드에서 식별가능하다. 그 이유는?", + "answerOptions": [ + { + "answerText": "대문자로 쓰여져 있으므로", + "isCorrect": "true" + }, + { + "answerText": "특정 이름을 가지고 있으므로", + "isCorrect": "false" + }, + { + "answerText": "케밥-케이스로 적혀있으므로 (예시: like-this)", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 37, + "title": "Lesson 19 - 스페이스 게임 - 점수 및 생명: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "Canvas 요소를 사용하여 어떻게 텍스트를 스크린에 그릴 수 있는가?", + "answerOptions": [ + { + "answerText": "div 나 span 요소에 텍스트를 넣는다.", + "isCorrect": "false" + }, + { + "answerText": "drawText()를 Canvas 요소에서 호출한다.", + "isCorrect": "false" + }, + { + "answerText": "fillText()를 컨텍스트 객체에서 호출한다.", + "isCorrect": "true" + } + ] + }, + { + "questionText": "게임에서 '생명'이란 개념은 왜 가지고 있어야 하는가?", + "answerOptions": [ + { + "answerText": "얼마나 피해를 입었는지 보여주기 위해서", + "isCorrect": "false" + }, + { + "answerText": "게임을 바로 끝내는 것이 아니라, 끝나기 전 몇 번의 기회를 더 가지기 위해서", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Canvas의 텍스트에 색을 입히기 위해 다음을 사용하면 된다.", + "answerOptions": [ + { + "answerText": "fillColor", + "isCorrect": "false" + }, + { + "answerText": "fillStyle", + "isCorrect": "true" + }, + { + "answerText": "textAlign", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 38, + "title": "Lesson 19 - 스페이스 게임 - 점수 및 생명: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "플레이어 생명이 얼마나 남았는지 알려주는 방법은?", + "answerOptions": [ + { + "answerText": "많은 우주선들", + "isCorrect": "false" + }, + { + "answerText": "점수 시스템", + "isCorrect": "true" + } + ] + }, + { + "questionText": "어떻게 Canvas 요소를 사용하여 스크린의 중앙에 텍스트를 위치시킬 수 있는가?", + "answerOptions": [ + { + "answerText": "Flexbox 사용해서", + "isCorrect": "false" + }, + { + "answerText": "클라이언트 윈도우의 가로사이즈/2 만큼의 x 좌표에 텍스트를 그리도록 지시한다.", + "isCorrect": "true" + }, + { + "answerText": "컨텍스트 오브젝트에서 textAlign 요소를 center 값으로 지정한다.", + "isCorrect": "false" + } + ] + }, + { + "questionText": "코드에서 다음처럼 생명을 감소시킨다.", + "answerOptions": [ + { + "answerText": "this.life-", + "isCorrect": "false" + }, + { + "answerText": "this.life--", + "isCorrect": "true" + }, + { + "answerText": "this.life++", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 39, + "title": "Lesson 20 - 스페이스 게임 - 끝과 재시작: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "게임을 재시작하기 좋은 타이밍은 언제인가?", + "answerOptions": [ + { + "answerText": "플레이어가 이겼거나 졌을 때", + "isCorrect": "true" + }, + { + "answerText": "언제든지", + "isCorrect": "false" + } + ] + }, + { + "questionText": "언제 게임이 종료되야 하는가?", + "answerOptions": [ + { + "answerText": "적의 우주선이 파괴되었을 때", + "isCorrect": "false" + }, + { + "answerText": "히어로 우주선이 파괴되었을 때", + "isCorrect": "true" + }, + { + "answerText": "점수가 수집될 때", + "isCorrect": "false" + } + ] + }, + { + "questionText": "게임에 레벨이 추가되는 좋은 방법은?", + "answerOptions": [ + { + "answerText": "주어진 레벨을 완료하는데 필요한 점수를 증가", + "isCorrect": "true" + }, + { + "answerText": "게임에 더 많은 플레이어를 추가", + "isCorrect": "false" + }, + { + "answerText": "게임에 그래픽 요소를 더 추가", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 40, + "title": "Lesson 20 - 스페이스 게임 - 끝과 재시작: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "게임 종료 조건을 만났을 때 사용하는 좋은 패턴은?", + "answerOptions": [ + { + "answerText": "적절한 메세지를 보여주는 것", + "isCorrect": "false" + }, + { + "answerText": "게임을 나가는 것", + "isCorrect": "false" + }, + { + "answerText": "적절한 메세지를 보여주고, 재시작하도록 플레이어에게 제공하는 것, 그리고 어떤 키를 입력해야 재시작할 수 있는지 보여주는 것", + "isCorrect": "true" + } + ] + }, + { + "questionText": "게임이 끝날때만 재시작 기능을 제공해야한다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "게임이 끝날 때, EventEmitter를 초기화하는 좋은 방법은?", + "answerOptions": [ + { + "answerText": "listeners를 초기화", + "isCorrect": "true" + }, + { + "answerText": "스크린을 비우기", + "isCorrect": "false" + }, + { + "answerText": "게임 윈도우를 닫기", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 41, + "title": "Lesson 21 - 은행 프로젝트 - 웹 앱의 HTML 템플릿과 라우터: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "웹 앱에서 다른 스크린을 보여주기 위해선 여러 개의 HTML 파일을 만들어야 한다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "웹 앱에서 로컬에 데이터를 저장하고 유지할 수 있다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "웹 앱에서 가장 적절한 데이터 공급원은?", + "answerOptions": [ + { + "answerText": "로컬 데이터베이스", + "isCorrect": "false" + }, + { + "answerText": "JavaScript 객체", + "isCorrect": "false" + }, + { + "answerText": "JSON API를 제공하는 서버", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 42, + "title": "Lesson 21 - 은행 프로젝트 - 웹 앱의 HTML 템플릿과 라우터: 강의 후 퀴즈", + "quiz": [ + { + "questionText": "HTML 템플릿은 DOM에 기본적인 부분이다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "false" + }, + { + "answerText": "아니요", + "isCorrect": "true" + } + ] + }, + { + "questionText": "URL에 어떤 부분이 라우팅에 필요한가?", + "answerOptions": [ + { + "answerText": "window.location.pathname", + "isCorrect": "false" + }, + { + "answerText": "window.location.origin", + "isCorrect": "false" + }, + { + "answerText": "둘 다", + "isCorrect": "true" + } + ] + }, + { + "questionText": "history.pushState() 함수를 호출 할때 트리거되는 이벤트 이름은?", + "answerOptions": [ + { + "answerText": "pushstate", + "isCorrect": "false" + }, + { + "answerText": "popstate", + "isCorrect": "true" + }, + { + "answerText": "navigate", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 43, + "title": "Lesson 22 - 은행 프로젝트 - 로그인과 가입 폼 작성하기: 강의 전 퀴즈", + "quiz": [ + { + "questionText": "HTML forms는 JavaScript 없이 유저 입력을 서버로 전송하는 것을 제공한다.", + "answerOptions": [ + { + "answerText": "네", + "isCorrect": "true" + }, + { + "answerText": "아니요", + "isCorrect": "false" + } + ] + }, + { + "questionText": "