묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
Server Error Error: '@next/font' is only available in Next.js 13 and newer. 오류
이러한 오류떄문에 지금 만든 게시판등록 페이지가 실행이안됩니다 포트폴리오 01
-
미해결Node.js로 웹 크롤링하기
안녕하세요! for of와 Promise.all 차이점에 관해서 질문드려요!
[제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다. 안녕하세요! 1-5 Promise.all 과 for of 문의 차이 강의 듣고 궁금한 점이 생겨서 질문드립니다!Promise.all 이 동시에 진행되어 속도가 빠른 대신 순서가 보장되지 않는다고 하셨고 for of는 순서대로 요청을 보내고 응답을 받기 때문에 속도가 좀 느리다고 하셨는데현업에서 많은 양의 데이터를 순서대로 크롤링 해야하는 경우에 Promise.all로 빠르게 크롤링 데이터를 받아와서 정렬을 하는게 나은가요 아니면 for of로 느리더라도 순서대로 데이터를 받아오는게 나은가요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
회원가입 코드 작성후, 500에러
안녕하세요 강사님! 강의 잘 듣고 있습니다!!현재 회원가입 페이지 기능생성(3)을 듣고있는데요.회원가입 요청을 보내는 과정에서 500오류가 뜹니다. 일단 로그를 확인해봤는데요. 클라이언트는 문제가 없는것 같았고, server와 db에러로그를 살펴봤습니다.server에러로그server running at http://localhost:4000 Error: connect ECONNREFUSED 127.0.0.1:5432 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1159:16) { errno: -61, code: 'ECONNREFUSED', syscall: 'connect', address: '127.0.0.1', port: 5432 } Error: DataSource is not set for this entity. at Function.getRepository (/Users/seokjiseon/Desktop/coding/clone/reddit/server/src/repository/BaseEntity.ts:115:19) at Function.findOneBy (/Users/seokjiseon/Desktop/coding/clone/reddit/server/src/repository/BaseEntity.ts:489:21) at /Users/seokjiseon/Desktop/coding/clone/reddit/server/src/routes/auth.ts:13:34 at Generator.next (<anonymous>) at /Users/seokjiseon/Desktop/coding/clone/reddit/server/src/routes/auth.ts:8:71 at new Promise (<anonymous>) at __awaiter (/Users/seokjiseon/Desktop/coding/clone/reddit/server/src/routes/auth.ts:4:12) at register (/Users/seokjiseon/Desktop/coding/clone/reddit/server/src/routes/auth.ts:6:56) at Layer.handle [as handle_request] (/Users/seokjiseon/Desktop/coding/clone/reddit/server/node_modules/express/lib/router/layer.js:95:5) at next (/Users/seokjiseon/Desktop/coding/clone/reddit/server/node_modules/express/lib/router/route.js:144:13) POST /api/auth/register 500 52.995 ms - 10 Error: DataSource is not set for this entity.이 문구를 보고, db와 연결이 안됐다고 추측하고 db로그를 확인했습니다. db로그Attaching to postgresdocker-compose up을 입력하면, 여기서 넘어가지 않더라구요.ㅠㅠ 구글링해보니 docker-compose up -d 를 입력하면 실행로그를 자세히 볼수 있다고 해서 입력해 봤는데요. 아래 오른쪽 터미널 창에 뜨는게 무한히 반복되는 상태만 지속되고 있었습니다.. 백엔드 지식이 전무해서, docker랑 db를 전부 처음 다뤄봐서 혼자 해결하기 어려워서 질문 남깁니다ㅠㅠ혹시 어떤부분을 더 살펴봐야 할까요??ㅠㅠ
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
UI 재사용성 질문
export const Row = styled.div` display: flex; flex-direction: row; width: 100%; justify-content: space-between; padding: 0 24px; margin: 8px 0; `; <Row style={{ justifyContent: "start" }}> <InputFieldSmall style={{ marginRight: "16px" }}> <Input placeholder="07250" /> </InputFieldSmall> <ButtonBlack>우편번호 검색</ButtonBlack> </Row>안녕하세요!컴포넌트 재사용성에 관하여 질문드리고 싶은게 있습니다!1일차 게시글 작성 UI 만들기 과제를 진행하던 중 CSS 스타일을 재사용 하기 위해서 Row라는 컴포넌트를 만들었습니다.UI상 justify-content속성에 space-between 또는 flex-start 같이 약간만 변하는 부분이 존재해서 inline-stlye을 사용하였습니다.제공 해주신 레퍼런스 코드에는 inline-style을 사용하지 않으셨는데 inline-style을 사용하는 것은 좋지 않은 방식인가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
Delete 'CR' eslint 표시 없애기 공유(windows사용자)
windows에서 vscode에서 typescript를 사용하시다 보면아래와 같이 delete 'cr'이라고 계속 빨간 글씨가 떠서눈에 거슬리는 경우가 있습니다.해결책 : eslintrc.js파일에 가셔서 아래와 같이rules에 추가한 후 저장해 주시면 됩니다.긁어서 eslintrc.js파일의 하단의 rules에 추가해 주세요 'prettier/prettier': [ 'error', { endOfLine: 'auto', }, ],
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
배포 후 로그인 인증이 안됩니다..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 현재 강의대로 배포중인 상태입니다.회원가입도 잘 되어서 로그인도 되는데로그아웃이란 커뮤니티 생성 시 401 (Unauthorized)에러가 뜹니다.. 로컬에서는 아무런 문제 없이 잘 작동하고 있습니다.아무리 찾아봐도 어떤 문제가 있는지를 모르겠습니다 ㅠㅠ
-
미해결지금 당장 NodeJS 백엔드 개발 [사주 만세력]
대운, 세운에 대한 의미
/members/:memberId/fortune/:bigNum?/:smallNum? 안녕하세요, 위 api에 대해 아직 이해가 안되서 여쭤봅니다.bigNum이 대운smalNum은 세운을 뜻하는것 같은데대운 1~10, 세운 1~10을 선택하면 위 param에 넣어진다는 것은 맞을까요?/members/:memberId/fortune/1/2 이런식으로요! 그런데 대운, 세운을 선택한다는게 무슨뜻인가요? 예컨대 대운 1을 택한다는것과 세운 3을 선택한다면 뭘 선택했다는건지 이해가 안가서요!아마 제가 프론트 학습(만세력 앱 관련)을 하기전에 서버부터 해서 그런거 같은데 이 의미에 대해 설명해주시면 감사하겠습니다
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
메인페이지 출력 오류
안녕하세요 메인 페이지 출력이 안되어서 질문 남깁니다해당 코드와 실행결과 사진으로 첨부했습니다
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
조언 부탁드립니다. mini-project
현재 puppeteer-crawling해서스타벅스메뉴와 이미지는 잘 긁어 왔는데요.자꾸 MongoDB에 저장되어 있는 img를 불러올 때 에러가 발생하는데, 성공하신 분 있나요?스키마에서 이미지 형식을 Buffer했습니다.import mongoose from "mongoose"; const StarbucksSchema = new mongoose.Schema({ name: String, img: Buffer, }); export const Starbucks = mongoose.model("Starbucks", StarbucksSchema); //이미지 URL로부터 이미지 다운로드 if (!fs.existsSync("img_crawling")) { fs.mkdirSync("img_crawling"); } let fileName = `img_crawling/${menuName}.jpg`; request(menuImage).pipe(fs.createWriteStream(fileName)); console.log(`이미지 ${fileName} 저장 완료`); 저는 fs모듈과 request모듈을 추가로 사용했는데,이미지의 주소를 MongDB에 저장하고,이미지는 별도의 폴더에 저장되게 만들었습니다.질문 요약1. MongDB에 이미지 저장할 때 fs라이브러리와 request라이브러리를 사용하게 맞나요?2. 이미지를 저장은 잘 됐는데, 화면에 뿌려 줄려고 하는데 자꾸 에러가 나요.3.몽고DB에 접속해서 이미지 주소를 가져와서, 그 주소를 기반으로 뿌려줘야 되는지4.아니면 몽고DB에 접속해서 그 메타주소(?)를 기반으로 현재 컴퓨터에 저장된 이미지를 화면에 뿌려줘야 하는지자꾸 구글링하면 몽고DB에 이미지파일을 직접적으로저장하는 것은 DB에 무리를 일으킨다. 그래서 어떠한라이브러리를 사용해서 DB에는 메타주소(?)만을 저장하고,이미지파일을 별도의 localStorage에 저장한다.또한 이미지를 그냥 가져(load) 올 수 없어서 인코딩을 해줘야 한다. 뭔 말인지 모르겠어요 ㅠ.ㅠ
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
searchbar 포트폴리오 리뷰 질문
searchbar 포트폴리오 리뷰에서 props로 searchbar 컴포넌트에 refechBoardsComment넘겨서 searchbar 컴포넌트에서 refechBoardsComment이용하여 페이지네이션을 수정없이 lastpage를변경할 수 있는데const { data: dataBoardsCount, refetch: refechBoardsCount } = useQuery<Pick<IQuery, "fetchBoardsCount">,IQueryFetchBoardsCountArgs>(FETCH_BOARDSCOUNT,{variables:{search:keyword}}); 이렇게 FETCH_BOARDSCOUNT에 variables 값의 search를 keyword(검색어)로 주어도 똑같이 작동하는데 이 방법이 refechBoardsComment props로 넘겨줄 필요없어 간단한거 같은데 refechBoardsComment이용한 것과 같은거 맞나요? 아님 refechBoardsComment를 이용한 것과 차이가 있는 건가요?
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
AbortSignal 오류 해결 방법 공유드립니다.
해당 오류 발생 시 컨트롤 + 파란색 부분 클릭하셔서 편집기 이동합니다. 압축 풀고 실행시키면 abort 구문과 timeout 구문이 누락되었습니다. 형식에 맞게 작성해주시면 됩니다.이후 정상 동작하였습니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
section 04 퀴즈 질문입니다 ㅠ
삭제하기 버튼을 눌럿을때 이런 에러가 뜨는데 이유를 모르겠습니다 ㅜㅠ
-
미해결지금 당장 NodeJS 백엔드 개발 [사주 만세력]
VueJs(프로트엔드) 오류
PS C:\Users\jagit\SSYW\saju-frontend-vuejs-master> npm installnpm WARN config global --global, --local are deprecated. Use --location=global instead.npm ERR! code ERESOLVEnpm ERR! ERESOLVE could not resolvenpm ERR! npm ERR! While resolving: vuetify-loader@1.9.2npm ERR! Found: vue@2.6.11npm ERR! node_modules/vuenpm ERR! vue@"2.6.11" from the root projectnpm ERR! peerOptional vue@"^2 || ^3.0.0-0" from @vue/babel-preset-app@4.5.17npm ERR! node_modules/@vue/babel-preset-appnpm ERR! @vue/babel-preset-app@"^4.5.17" from @vue/cli-plugin-babel@4.5.17npm ERR! node_modules/@vue/cli-plugin-babelnpm ERR! dev @vue/cli-plugin-babel@"~4.5.15" from the root projectnpm ERR! 3 more (vue-axios, vuetify, vuex)npm ERR! npm ERR! Could not resolve dependency:npm ERR! peer vue@"^2.7.2" from vuetify-loader@1.9.2npm ERR! node_modules/vuetify-loadernpm ERR! dev vuetify-loader@"^1.7.0" from the root projectnpm ERR! npm ERR! Conflicting peer dependency: vue@2.7.14npm ERR! node_modules/vuenpm ERR! peer vue@"^2.7.2" from vuetify-loader@1.9.2npm ERR! node_modules/vuetify-loadernpm ERR! dev vuetify-loader@"^1.7.0" from the root projectnpm ERR! npm ERR! Fix the upstream dependency conflict, or retrynpm ERR! this command with --force, or --legacy-peer-depsnpm ERR! to accept an incorrect (and potentially broken) dependency resolution.npm ERR! npm ERR! See C:\Users\jagit\AppData\Local\npm-cache\eresolve-report.txt for a full report.npm ERR! A complete log of this run can be found in:npm ERR! C:\Users\jagit\AppData\Local\npm-cache\_logs\2023-01-28T07_03_01_187Z-debug-0.logPS C:\Users\jagit\SSYW\saju-frontend-vuejs-master> npm run servenpm WARN config global --global, --local are deprecated. Use --location=global instead.> saju-frontend-vuejs@0.1.0 serve> vue-cli-service serve'vue-cli-service'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다.PS C:\Users\jagit\SSYW\saju-frontend-vuejs-master> 오류납니다. 도와주세요!
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
graphql 관련 질문이 있습니다.
안녕하세요 수업 내용 중, graphql 실습 관련하여 궁금한 것이 있습니다. 실습 과정에서 createProduct API에 파라미터 값을 저장해서 보내려 하는 과정에서 mutation을 구성할 때createProductInput 이라는 부분은 REST API의 다중 JSON 방식으로 보내는 것으로 해석하면 될까요?그런데 해당 데이터를 fetchProduct로 조회 시다중 JSON과 같은 그림이 아닌, 그냥 같은 한 덩어리로 넘어오는데 왜 저장할 때는 다중 JSON과 같은 방식으로 넣고 조회 시에는 그냥 뭉쳐져서 조회 되는지 차이가 궁금합니다. (그럼 굳이 CREATE 시 다중 JSON과 같은 방식으로 넣는 이유가 궁금합니다)그리고 중간에 createProductInput 을 사용하는 이유에 대해서 오해를 방지하기 위함이라고 말씀해주셨는데 키 값도 있는데 왜 오해를 불러 일으킨다는 것인지 잘 이해를 못했습니다.질문 요약첫 사진의 createProductInput 부분이 REST API의 다중 JSON 같은 방식이라고 보면 될까요?createProduct로 값을 넣을 때는 이중 JSON과 같은 방식으로 파라미터를 넣고 API를 넘겨줬는데 데이터를 조회하면 그냥 1차원 JSON으로 넘어오는데 그럼 왜 굳이 createProduct 에서 이중 JSON 방식으로 구성해서 넣는 것인지 궁금합니다. createProduct에서 createProductInput로 한 번 더 감싸는 자세한 이유 (수업 중간에 number라는 키 값으로 보이는 것도 있는데 오해를 불러 일으킬 수도 있다는 말씀에서 왜 오해인지 자세히 이해를 못함)입니다. 감사합니다.
-
미해결지금 당장 NodeJS 백엔드 개발 [사주 만세력]
postman 사용 중 애러
어찌해야 할지 모르겠네요. help me
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
setProducts 질문
위 사진처럼 setProducts 밑에 console.log를 해봤는데한번 출력될 줄 알았는데 왜 두 번 출력되는 건가요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
TypeORM 에러 및 middleware 설치 이후 cors 에러 문의드립니다.
안녕하세요, 강사님!강의 듣던 도중 해결하지 못한 에러가 있어 조언해주실 수 있으신지 문의드립니다. 1 TypeORM에서 다음과 같은 에러가 뜹니다.Server running at http://localhost:4000 QueryFailedError: tables can have at most 1600 columns at PostgresQueryRunner.query (생략) { query: 'ALTER TABLE "posts" ADD "title" character varying NOT NULL', parameters: undefined, driverError: error: tables can have at most 1600 columns at Parser.parseErrorMessage (생략) { length: 100, severity: 'ERROR', code: '54011', detail: undefined, hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'tablecmds.c', line: '6819', routine: 'ATExecAddColumn' }, length: 100, severity: 'ERROR', code: '54011', detail: undefined, hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'tablecmds.c', line: '6819', routine: 'ATExecAddColumn' } <== 이 부분이 계속 반복됩니다 (반복적으로 테이블이 생성되는 듯)stackoverflow를 찾아보니 oneToMany relation이 문제가 된다는 글을 봤는데... 제가 백앤드쪽 지식이 전무하다보니, oneToMany 데코레이터로 설정된 Entity를 어떻게 수정해야하는건지 잘 모르겠고, 강사님 코드와 동일하게 작성한 것 같은데 뭐가 문젠지 잘 모르겠습니다.특히나 아래 코드 중,{ length: 100, severity: 'ERROR', .... }이 부분이 반복적으로 로그에 찍히는데 어떻게 해결해야할지 잘 모르겠습니다.이 글을 보니, nomarlization을 진행하라는데 이게 맞는 솔루션인가요?백앤드 해보고 싶어서 아는 것 없이 무작정 따라하는 중인데, 지식이 부족해서 제대로 된 해결방법이 뭔지 알 수가 없네요.. 2middleware 설치 전까지는 회원가입 기능이 잘 되었었는데, middleware 설치 이후로는, 로컬호스트 3000에서 cors 에러가 뜹니다. (아래 이미지 첨부)로그인, 회원가입 기능 어떤것도 되지 않는 상태이고, token도 생성되지 않습니다.일단 계속해서 강의를 듣고 있는데 에러 해결이 안되어 더이상 진도를 나갈 수가 없어서 문의남깁니다 ㅠㅠAccess to XMLHttpRequest at 'http://localhost:4000/api/auth/me' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. { "message": "Network Error", "name": "AxiosError", "stack": "AxiosError: Network Error\n at XMLHttpRequest.handleError (webpack-internal:///./node_modules/axios/lib/adapters/xhr.js:168:14)", "config": { "transitional": { "silentJSONParsing": true, "forcedJSONParsing": true, "clarifyTimeoutError": false }, "adapter": [ "xhr", "http" ], "transformRequest": [ null ], "transformResponse": [ null ], "timeout": 0, "xsrfCookieName": "XSRF-TOKEN", "xsrfHeaderName": "X-XSRF-TOKEN", "maxContentLength": -1, "maxBodyLength": -1, "env": {}, "headers": { "Accept": "application/json, text/plain, /" }, "baseURL": "http://localhost:4000/api", "withCredentials": true, "method": "get", "url": "/auth/me" }, "code": "ERR_NETWORK", "status": null } 나름대로 검색도 해보고, node_modules 싹 날리고 재설치해봤으나.. ㅠㅠ 답변 기다리겠습니다 감사합니다
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
5분13초 부분에서 삭제버튼을 누르면 onDelete가 함수가 아니라고 에러메세지가 뜨는데요.
5분13초 부분에서 삭제버튼을 누르게 되면 다음과 같은 에러가 발생하여, 원인을 찾고 있는데Uncaught TypeError: onDelete is not a function강의영상 화면의 소스코드와 비교를 해봐도 원인을 찾기가 어려워, 강의 진행에서 사용된 소스를 직접보려고 합니다. (Props으로 넘기는 부분을 몇번을 확인했는데 강의영상과 다른 부분을 찾을 수 없었습니다.)구글 리서치중 import관련된 부분의 가능성을 제시한 글이 있어 찾아보다가,import관련된 소스코드부분이 이번회 강의영상에서 화면에 보이지 않아,밑의 강의 진행 중 사용된 소스코드 링크를 타고 들어가봤는데, 소스가 현재부분의 소스가 아닙니다.(DiaryItem.js, DiaryList.js 등의 파일이 빠져있습니다.)현재강의(6-5 리스트 데이터 삭제하기) 기준으로, 소스코드 링크를 받을 수 있을까요?(아니면 완성본이라도... ^^;)감사합니다.
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
nextTick, promise 우선순위
강의 부분 : 3-6강 5:46초영상에는 nextTick이 promise보다 우선해서 console에 찍히게 되는데, 제가 직접코드를 실행시켜보니 promise가 nextTick보다 먼저 console로 찍혔습니다. 우선순위가 어떤것이 맞는 것인가요??코드setImmediate(()=>{ console.log('immediate');})process.nextTick(()=>{ console.log('nextTick');});setTimeout(()=>{ console.log('timeOut');},0);Promise.resolve().then(()=>console.log('promise')); 출력결과혹시 몰라 여러번 컴파일 했는데도 결과가 같게 나옵니다:)
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
제너레이터 함수 안 yield 구문 실행에대해 질문드립니다..
function* test() { yield 1; yield 2;}===============const gen = test()===============gen.next(){ "value": 1, "done": false}보통 제너레이터 함수를 설명할때, 개발자 도구에서 이런식으로 설명을 많이 하는것같은데...설명만 보면 yield 구문실행을 위해선, next() 라는 함수를 사용해야된다는건 알겠습니다..근데 실제코드에서는 next() 함수를 실행하지않는데, 어떻게 yield 구문들이 실행되는지 이해가 안됩니다..