묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
테스트 간헐적 실패에서 대해서 다루나요?
안녕하세요섹션5 코드 다듬기까지 들은 시점에서 테스트 코드를 여러번 실행했을때 간헐적으로 실패를 경험합니다혹시 해당 내용 수정하는 부분이 끝까지 들으면 나오나요아래 에러내용 삽입했습니다. Failed to resolve parameter [com.clean.splearn.application.provided.MemberFinder memberFinder] in constructor [com.clean.splearn.application.provided.MemberFinderTest(com.clean.splearn.application.provided.MemberFinder,com.clean.splearn.application.provided.MemberRegister,jakarta.persistence.EntityManager)]: Failed to load ApplicationContext for [WebMergedContextConfiguration@350ec690 testClass = com.clean.splearn.application.provided.MemberFinderTest, locations = [], classes = [com.clean.splearn.SplearnApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.OnFailureConditionReportContextCustomizerFactory$OnFailureConditionReportContextCustomizer@476fe690, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@6dd1c3ed, [ImportsContextCustomizer@49cb1baf key = [com.clean.splearn.SplearnTestConfiguration]], org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@7fdab70c, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@a451491, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@2aff9dff, org.springframework.boot.test.web.reactor.netty.DisableReactorResourceFactoryGlobalResourcesContextCustomizerFactory$DisableReactorResourceFactoryGlobalResourcesContextCustomizerCustomizer@15639440, org.springframework.test.context.support.DynamicPropertiesContextCustomizer@0, org.springframework.boot.test.context.SpringBootTestAnnotation@cbfbc3c], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] org.junit.jupiter.api.extension.ParameterResolutionException: Failed to resolve parameter [com.clean.splearn.application.provided.MemberFinder memberFinder] in constructor [com.clean.splearn.application.provided.MemberFinderTest(com.clean.splearn.application.provided.MemberFinder,com.clean.splearn.application.provided.MemberRegister,jakarta.persistence.EntityManager)]: Failed to load ApplicationContext for [WebMergedContextConfiguration@350ec690 testClass = com.clean.splearn.application.provided.MemberFinderTest, locations = [], classes = [com.clean.splearn.SplearnApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.OnFailureConditionReportContextCustomizerFactory$OnFailureConditionReportContextCustomizer@476fe690, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@6dd1c3ed, [ImportsContextCustomizer@49cb1baf key = [com.clean.splearn.SplearnTestConfiguration]], org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@7fdab70c, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@a451491, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@2aff9dff, org.springframework.boot.test.web.reactor.netty.DisableReactorResourceFactoryGlobalResourcesContextCustomizerFactory$DisableReactorResourceFactoryGlobalResourcesContextCustomizerCustomizer@15639440, org.springframework.test.context.support.DynamicPropertiesContextCustomizer@0, org.springframework.boot.test.context.SpringBootTestAnnotation@cbfbc3c], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at java.base/java.util.Optional.orElseGet(Optional.java:364) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) Caused by: java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@350ec690 testClass = com.clean.splearn.application.provided.MemberFinderTest, locations = [], classes = [com.clean.splearn.SplearnApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.OnFailureConditionReportContextCustomizerFactory$OnFailureConditionReportContextCustomizer@476fe690, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@6dd1c3ed, [ImportsContextCustomizer@49cb1baf key = [com.clean.splearn.SplearnTestConfiguration]], org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@7fdab70c, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@a451491, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@2aff9dff, org.springframework.boot.test.web.reactor.netty.DisableReactorResourceFactoryGlobalResourcesContextCustomizerFactory$DisableReactorResourceFactoryGlobalResourcesContextCustomizerCustomizer@15639440, org.springframework.test.context.support.DynamicPropertiesContextCustomizer@0, org.springframework.boot.test.context.SpringBootTestAnnotation@cbfbc3c], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130) at org.springframework.test.context.junit.jupiter.SpringExtension.getApplicationContext(SpringExtension.java:351) at org.springframework.test.context.junit.jupiter.SpringExtension.resolveParameter(SpringExtension.java:337) ... 3 more
-
미해결Git & GitHub, 원리부터 차근차근 - 근본깃 [기초편]
git branch 결과
안녕하세요, git branch 결과에 대해 궁금한 점이 있어 질문을 남깁니다. git branch를 한 제 결과는 강사님과는 다르게 main 대신 master로 나옵니다.현재는 기본 세팅값이 main 브랜치가 아닌 master 브랜치인 것인지 궁금합니다. 감사합니다.
-
미해결AI 시대, 이제 현업이 개발한다! Cursor와 ChatGPT로 시작하는 바이브코딩
실습2 fastapi 생성시 오류(supabase 누락)
두번째 과정을 따라하는데 강의처럼 진행이 되지 않아서 몇번 다시 해보면서 저의 경우, 도움이 되실까 적어봅니다.오류가 접속이었는데, url이나 인증키부분 동일하게 넣었는데 계속 안되더라고요. 그래서 강의자료의 소스나 supabase의 연결정보를 보니 예시가 createClient(SUPABSE_URL, 이렇게 되어 있는데, 저의경우 postgre로 연결이 되었습니다..agent 에 db접속 정보를 아래와 같이 프롬프트 주고 나니 requirements에 supabase가 추가되었고, pip install > run하여 docs가 호출되었습니다.. @database.py 접속방식은 틀렸어요. SUPABASE_URL = os.getenv('SUPABASE_URL')SUPABASE_KEY = os.getenv('SUPABASE_KEY')if not SUPABASE_URL or not SUPABASE_KEY: raise ValueError("Supabase credentials not found in environment variables")supabase = create_client(SUPABASE_URL, SUPABASE_KEY)이런 형태로 해주세요.
-
미해결타입스크립트로 배우는 리액트(React.js) : 기초부터 최신 기술까지 완벽하게
여러 단어 선택해서 한번에 수정하는 법!
안녕하세요.이번 영상 4:33쯤에서 커서를 여러군데에 만들고 수정하는 부분이 나오는데 어떻게 하신건지 궁금해요! 그리고 단어를 한번에 수정하더라도 원래 소문자였던 부분은 소문자, 원래 대문자였던 부분은 대문자로 처리되던데 이 부분도 궁금해요!
-
해결됨토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
JPA Entity Class 와 Domain Model Entity Class 를 분리해야 하는가? 에 대한 추가 질문
안녕하세요. 토비님!먼저 제가 정말 오랜 기간 고민해온 주제에 대해서 이렇게 강의를 내주셔서 너무 감사드립니다!!특히 강의에서 여러 차례에 걸쳐서 깊게 다룬, "JPA Entity Class 와 Domain Model Entity Class 를 분리해야 하는가?" 에 대한 토비님의 의견이 너무 공감되고 유익했습니다! 감사합니다!그리고 이에 대해서 두 가지 질문이 있습니다.첫 번째는,저는 사실 지난 3년 간 스타트업에서 Domain Entity 와 JPA Entity 를 분리해서 사용해왔습니다.그런데 강의에서 다뤄주신 내용이 제가 겪으며 갖게 된 생각과는 결이 조금 다르다고 느껴서 이렇게 질문을 드리게 되었습니다.제가 느꼈던 "Domain Entity 와 JPA Entity 를 분리해서 사용했을 때의 장단점"은 이랬습니다.장점 1. 도메인 모델의 수정이 DB 데이터 마이그레이션을 꼭 강제하는 게 아니라서, 도메인 모델 수정이 매우 자유롭습니다.상황에 따라 의도적으로 JPA Entity 클래스와 도메인 모델 클래스를 다른 모양으로 만들어두고 유지할 수 있습니다.(ex. User, UserDetail 이 쪼개져 있었는데, 어떠한 의사결정으로 인해 User 하나로 합쳐서 관리하는게 맞다는 판단이 든 경우, UserEntity, UserDetailEntity 는 놔둔 채로 User 만 합치는 게 가능.)장점 2. 도메인 모델들을 완전히 정규화된 구조로 가져갈 수 있습니다. 회사에서 비즈니스가 발전하다보면 종종 어쩔 수 없이 테이블에 성능을 위한 반정규화 필드나 soft delete 용 deleted_at 필드 등을 넣게 됩니다. 하지만 사실 이런 필드들은 순수 비즈니스 로직을 기술하는데에는 방해가 될 뿐인, 너무 Technical 한 부분들입니다. 이러한 반정규화 or 기능 필드들을 도메인 모델에는 넣지 않고 JPA Entity 에만 넣어서 어댑터에서 처리하면, 도메인 모델 내에서는 항상 순수 비즈니스 로직만을 기술할 수 있게됩니다.단점 1. JPA 의 lazy loading 을 활용할 수 없습니다. 항상 도메인 모델 객체는 완전한 상태로만 존재합니다. 그래서 성능 문제로 CQRS 패턴이 강제됩니다. 특히 저는 GraphQL 을 사용중이라 더욱 더 CQRS 가 필요했습니다.단점 2. Repository 의 save(= upsert) 로직을 직접 구현해야 합니다. 특히 복잡한 비즈니스의 핵심 도메인 모델들은 관계된 테이블도 많아가지고 이 save 구현이 엄청나게 길어집니다. 저는 이 save 로직을 직접 구현하고 관리할 때 회의감이 가장 많이 들었습니다. Spring Data JPA 가 그 동안 얼마나 압도적인 생산성을 제공해주고 있었는지도 느끼게 됐습니다.저는 스타트업에서 일하고 있다보니 특히 생산성을 중요하게 생각합니다.그런 점에서도 위의 장점들과 단점들이 모두 너무 치명적으로 느껴졌습니다.그래서 이 관점들에 대한 토비님의 의견과 토비님이 제 상황이시라면 어떤 선택을 하셨을지가 너무너무 궁금합니다. (참고로 저는 Kotlin Springboot + Spring Data JPA + Kotlin JDSL + GraphQL-Kotlin(code first)을 사용하고 있습니다.)두 번째는,사실 저는 Kotlin Springboot 를 사용중인데, 코틀린 언어와 JPA 가 너무 안 어울린다는 생각을 종종 합니다.예를 들면, DB table 에 정의된 column default 값을 쓰려면 JPA Entity 의 해당 필드에 null 을 넣어서 보내야하는데, 보통 테이블 컬럼에 default 를 쓰는 경우는 대부분 해당 컬럼이 not null 타입입니다. 그래서 당연히 JPA Entity 에도 필드 타입은 not null 로 하고 싶어집니다.물론 @Column(insertable=false)를 사용하긴 하지만, 결국 그럼 이 JPA Entity 객체를 생성할 때 해당 필드에 실제로 저장되지도 않을 값을 거짓으로 넣어야 하는 상황이 생깁니다.그래서 조금 더 Kotlin 에 잘 맞는 Exposed 를 고려하자니, 도메인 모델 클래스와 JPA Entity 클래스 분리가 강제되는 느낌이고, 이게 과연 JPA 의 생산성을 따라올 수 있을까? 올바른 선택이 맞을까? 하는 의문이 듭니다.그래서 궁금한 점은,혹시 토비님이 추천하시는 좀 더 Kotlin 언어에 잘 맞고 Kotlin Springboot 를 생산적으로 사용할 수 있는 방법이 있을까요?
-
미해결[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크)
AActor를 APhysicsVolume으로 Cast가 되는 이유
안녕하세요!아래 코드는 UPrimitiveComponent의 UpdatePhysicsVolume 함수인데, 컴포넌트의 owner인 액터를 가져와서 그대로 Cast<APhysicsVolume>을 했는데, 액터가 캐릭터일 수도 있을 텐데 이게 어떻게 가능한 것인지 모르겠습니다... 감사합니다// haker: just get the owner Actor and compare Physics Volume's priority APhysicsVolume* V = Cast<APhysicsVolume>(OtherComponent->GetOwner()); if (V && V->Priority > BestPriority) { if (V->IsOverlapInVolume(*this)) { BestPriority = V->Priority; BestVolume = V; } }
-
미해결코딩 몰라도 OK! CursorAI로 시작하는 개발 생활 (웹/초급)
뽀모도로 insert 버튼이 안나오고 에러가 뜹니다
뽀모도로 이제 막 시작했는데, ctrl + j, ctrl+k 인가 눌러서 말씀하신 명령어 입력했더니 화살표 처럼 나옵니다.insert 라는게 안떠서 그냥 엔터 눌렀더니 아래 빨간 글자로 막 오류가 뜨네요 ㅠㅠ어떻게 해야 제대로 설치가 될까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
user-loanHistory 폴더 구조 질문
안녕하세요!@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List<UserLoanHistory> userLoanHistories = new ArrayList<>(); 이 코드를 봤을 때 User와 UserLoanHistory는 강한 연결관계를 가지고 있는 것 같습니다(이를 같은 aggregate라고 하는 것 맞나요?). 그래서 폴더 구조를 user 밑에 loanHistory를 넣으신 것 같은데, 일반적으로 이런식으로 폴더 구조를 잡나요? 아니면 domain 폴더 아래에 user와 같은 레벨로 loanHistory를 만들고, 대출 기능도 BookService에서 구현하는 게 아니라 UserLoanHistory용 컨트롤러/서비스/레포지토리를 따로 만들어 구현해도 되나요?
-
미해결코딩 몰라도 OK! CursorAI로 시작하는 개발 생활 (웹/초급)
node.js 설치 링크가 안열립니다
실습 첫강의 수업노트에 링크 눌렀는데1번 사진처럼 존재하지 않는 사이트라고 뜨네요ㅠㅠ링크 수정 및 전달 부탁드립니다! ㅠㅠ얼른 만들어보고싶은데 진행을 못 하고 있습니다! 답변 기다리겠습니다. 감사합니다:)
-
미해결카카오,구글 SNS 로그인(springboot3, vue3)
안녕하세요 선생님
혹시 다음 강의도 준비 중이신가요 ? 준비 중이시라면 어떤 강의 인지 알 수 있을까요
-
미해결Next.js 15로 완성하는 실전 YouTube 클론 개발
폴더구조
해당 영상에서 사용된 폴더구조는 어떤 아키텍처를 따른것일까요?
-
해결됨카카오,구글 SNS 로그인(springboot3, vue3)
application.yml에 동일 OAuth2 제공업체의 redirect-uri를 여러 개 등록할 수 있을지 궁금합니다.
안녕하세요.application.yml에 동일 OAuth2 제공업체의 redirect-uri를 여러 개 등록할 수 있을지 궁금합니다. 현재 OAuth 제공업체에 개발 및 테스트용과 배포용으로 redirect-uri를 여러 개 등록하였습니다.해당 redirect-uri를 application.yml에 복수로 등록하여 사용할 수 있을까에 대한 의견이 궁금합니다.
-
미해결
파이썬으로 hwp 파일을 읽어서 특정 문자열을 검색하는 기능을 구현하는 방법이 있을까요?
파이썬 초보입니다.파이썬으로 hwp 파일을 읽어서 특정 문자열을 검색하는 기능을 구현하려고 합니다.특정 문자열의 위치(행,열)와 그 문자열 주위의 문자열을 보여주는 기능입니다.그런데 한글은 서식과 표 등이 있어 텍스트 파일 처럼 조작하기가 쉽지 않아 보입니다.pyhwp 라이브러리는 설치해도 import 해서 사용하면 에러가 자꾸 나고hwp_extract 라이브러리를 이용해서 해봤는데 정확한 위치가 보여지지 않거나 텍스트만 보여지지 않고 문자열이 깨지는 등 원하는 대로 안 되네요..win32com 라이브러리를 쓰면 보안창이라는 화면이 뜨더군요, 안 뜨게 하려는데.. 그것도 안 맞아서..하여튼 만족할 방법이 잘 안 보이네요, 좋은 방법이 있을까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
4. 단어뒤집기
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 명쾌한 강의 감사합니다.이 영상의 solution 함수에서 파라미터로 n이 들어가지만 실제로 쓰이지 않는 것으로 이해하였습니다. 그러면 1. solution 함수 파라미터에 n을 굳이 넣어야 할 필요가 있나요? 2. 만약 n을 사용하고 answer를 int[n]로 지정하면 될 것 같은데 그렇게 해도 괜찮을까요? 3. ArrayList는 길이가 정해져있는 배열에 비해 성능에 있어 불리하지는 않을까요? 만약 불리하다면 2로 푸는 게 좋을까 생각이 들어서요.
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
Elasticsearch 를 벡터 데이터베이슬 활용가능한가요
여러 벡터 데이터베이스가 나왔는데 혹시 Elasticsearch 를 docker로 설치하고 사용하는 경우도 있는지 궁금합니다. Elasticsearch 도 벡터 데이터베이스를 지원한다는 글을 읽은바가 있고, 검색엔진 분야에서는 Open 소스로 많이 활동되다는 점에서 활용성이 좋아보여서 질문 드립니다.
-
미해결Next.js와 yolov11로 화재감지 시스템 구축하기
데이터셋 자료를 받을 수가 없어요.
안녕하세요,Roboflow에서 Dataset 다운로드 받을 수 있게 알려주셨는데, 영상과 같이 다운로드 받으면 실제 zip 파일에 README.dataset.txt파일과 README.roboflow.txt 파일만 존재합니다.데이터셋파일도 강의자료로 올려주시면 감사합니다.
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
ResourceManager에서 Multiple Sprite를 로드하는 방법
안녕하십니까? ResourceManager.cs 코드의 어드레서블 에셋 로드 부분에서 스프라이트 로드 관련 질문입니다. 현재 코드는 single sprite에 대한 방식만 제공하고 있는데요. 혹시 Multiple Sprite를 로드하는 방법에 대해 따로 추가로 연구하신 방법이 있는지 궁금합니다. 검색을 해보니 인프런 AI답변으로 Single 스프라이트로 로드 하는걸 추천한다고 했습니다.개인적인 프로젝트라면 개별 스프라이트로 분리해서 추가하는 것도 가능한데, 실제 현업에서는 Multiple Sprite로 작업이 많을 거 같기도 하고 궁금한 부분이라 질문드립니다. 감사합니다.
-
해결됨설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
타이밍 위반 질문
안녕하세요 🙂[1. 질문 챕터] : 섹션3 FPGA 5장[2. 질문 내용] : 타이밍 위반이 왜 일어나는지 모르겠습니다.[3. 시도했던 내용, 그렇게 생각하는 이유] :맛비님 영상에서는 타이밍 위반이 일어나지 않았는데, 저의 경우엔 I/O Delay가 없는 것에 대한 타이밍 위반이 일어납니다. Arty z7-10을 쓰고 있고, xdc 파일에 따로 I/O Delay가 없긴 한데, 그건 ZYBO z7-20 도 마찬가지인걸로 알아서 왜 타이밍 위반이 일어나는지 이해가 안됩니다.
-
미해결Vue 3 & Firebase 10 커뮤니티 만들기 풀스택 - "활용편" (with Pinia, Quasar, Tiptap, VueUse)
무한 스크롤링 질문
<div v-intersectionObserver="handleIntersectionObserver" class="bg-primary"></div>여기 div에 height 100px 했을때는 스크롤해서 하단에 닿이면 6개씩 잘보였는데 style 부분을 지우니까 스크롤 해서 하단에 닿였을때 나머지 게시물이 6개씩 보이는게 아니라 loadMore() 이 연속적으로 실행되어 전체가 다 보이게 됩니다 height가 0이 되면서 계속 노출이 돼서 그렇게 되는건가요?
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
failed to pull and unpack image \"registry.k8s.io/kube-apiserver:v1.30.14\": context canceled"
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://inf.run/DvsRD)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. (https://inf.run/Ljaer) Vagrant up을 하면, kubeadm init 단계에서 이미지를 가져오지 못하고 아래아 같이 멈추어 있습니다.ping google.com을 통해 외부 연결은 정상적으로 되는건 확인했습니다.어떤 부분을 더 체크해야 할까요?==> cp-k8s-1.30.1: Running provisioner: shell... cp-k8s-1.30.1: Running: /var/folders/p7/4nthz5pn0g983598nhw8gqd00000gn/T/vagrant-shell20250627-87887-ucssq0.sh cp-k8s-1.30.1: I0627 19:51:36.035198 3710 version.go:256] remote version is much newer: v1.33.2; falling back to: stable-1.30 cp-k8s-1.30.1: [init] Using Kubernetes version: v1.30.14 cp-k8s-1.30.1: [preflight] Running pre-flight checks cp-k8s-1.30.1: [preflight] Pulling images required for setting up a Kubernetes cluster cp-k8s-1.30.1: [preflight] This might take a minute or two, depending on the speed of your internet connection cp-k8s-1.30.1: [preflight] You can also perform this action in beforehand using 'kubeadm config images pull' cp-k8s-1.30.1: W0627 19:51:36.766582 3710 checks.go:844] detected that the sandbox image "registry.k8s.io/pause:3.6" of the container runtime is inconsistent with that used by kubeadm.It is recommended to use "registry.k8s.io/pause:3.9" as the CRI sandbox image. Log: sudo journalctl -u containerd -f --since "10 minutes ago" Jun 27 19:51:35 cp-k8s systemd[1]: Started containerd container runtime. Jun 27 19:51:36 cp-k8s containerd[3591]: time="2025-06-27T19:51:36.782079946+09:00" level=info msg="PullImage \"registry.k8s.io/kube-apiserver:v1.30.14\""Jun 27 19:54:57 cp-k8s containerd[3591]: time="2025-06-27T19:54:57.270115838+09:00" level=info msg="PullImage \"registry.k8s.io/kube-apiserver:v1.30.14\""Jun 27 19:56:35 cp-k8s containerd[3591]: time="2025-06-27T19:56:35.785071330+09:00" level=error msg="PullImage \"registry.k8s.io/kube-apiserver:v1.30.14\" failed" error="rpc error: code = Canceled desc = failedto pull and unpack image \"registry.k8s.io/kube-apiserver:v1.30.14\": context canceled"Jun 27 19:57:26 cp-k8s containerd[3591]: time="2025-06-27T19:57:26.762161620+09:00" level=error msg="PullImage \"registry.k8s.io/kube-apiserver:v1.30.14\" failed" error="failed to pull and unpack image \"registry.k8s.io/kube-apiserver:v1.30.14\": failed to copy: read tcp 10.0.2.15:48760->52.219.124.238:443: read: connection reset by peer"Jun 27 19:57:26 cp-k8s containerd[3591]: time="2025-06-27T19:57:26.770337247+09:00" level=info msg="PullImage \"registry.k8s.io/kube-apiserver:v1.30.14\"" [질문 하기]