안녕하세요, 수업을 다 듣고 따로 프로젝트를 생성하여 에러 메시지를 errors.properties에서 작성한 후 적용 여부를 확인해봤는데 적용이 되지 않아 질문드립니다. 프로젝트 환경 Spring Boot 3.2.1 / Java 17 / Jar Packaging / IntelliJ IDEA 입니다. 설정 및 작성 코드 application.properties spring.messages.basename=messages,errors errors.properties #추가(스프링이 생성한 기본 오류 메시지 코드 설정하기) typeMismatch.java.lang.Integer = 숫자를 입력해주세요!!!!! typeMismatch = 타입 오류입니다!!!! #Bean Validation 추가 NotNull.validation.minVal = 널 안됨!! Range={0}, {2} ~ {1} 허용 Max={0}, 최대 {1} NotNull={0} Null 안됨!!!! 검증 대상 객체 @Data @NoArgsConstructor @AllArgsConstructor public class Validation { // @NotNull(message = "값 필수 입력!") // @NotNull(message = "{NotNull}") @NotNull @Min(1) private Integer minVal; @Max(100) private Integer maxVal; @Range(min = 10, max = 100) private Integer rangeVal; } 컨트롤러 @Slf4j @RestController public class ValidationController { @GetMapping("/test") public String setValues(@Validated @ModelAttribute Validation validation, BindingResult bindingResult) { log.info("validation={}", validation); if (bindingResult.hasErrors()) { List<FieldError> fieldErrors = bindingResult.getFieldErrors(); for (FieldError fieldError : fieldErrors) { log.info("errorMessage={}", fieldError.getDefaultMessage()); } } return "OK"; } } 위와 같이 작성을 하였고 에러를 발생시켜 보면 errorMessage={} 의 로그 부분에서 errors.properties에 설정한 메시지가 아니라 스프링에서 기본으로 제공하는 오류 메시지가 출력 됩니다. 여러가지 테스트 결과 application.properties와 errors.properties 자체를 인식하지 못하는 건가 했지만 파일을 인식하는 것을 확인함 애너테이션에 메시지를 직접 적용하는 것은 적용이 됨 @NotNull(message = "{NotNull}") 과 같이 {} 안에 errors.properties에서의 적용 이름?을 직접 넣으면 메시지가 제대로 출력됨 강의에서의 프로젝트와 다른 점이 버전 뿐인 것 같은데, 혹시 자바 혹은 스프링 부트의 버전에 따라 검증 애너테이션의 메시지가 적용되는 로직에 차이가 있나요? 그게 아니라면 어떤 이유로 이렇게 되는 건지 꼭 이유를 알고 싶습니다. 제가 작성한 부분 중 틀린 부분이나 추가해야 할 부분이 있다면 알려주세요..! 여러군데 검색을 해봤지만 원하는 답을 얻을 수 없어 질문 올립니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 사진처럼 JSP코드에서 자바코드가 인식이 안되네요...라이브러리 설치하라는데로 했는데 뭐가 문제인지알수있을까요? build.gralde 파일 plugins { id 'java' id 'war' id 'org.springframework.boot' version '3.2.1' id 'io.spring.dependency-management' version '1.1.4' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' //JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'jakarta.servlet:jakarta.servlet-api' //스프링부트 3.0 이상 implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api' //스프링부트 3.0 이상 implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl' //스프링부트 3.0 이상 //JSP 추가 끝 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' //providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() }
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 잘했는데 왜 안녕하세요 null. 이라고 뜨는지 모르겠습니다. ㅠㅠ 뭐가 문젠가요
<div>상품 종류</div> <div th:each="type : ${itemTypes}" class="form-check form-check-inline"> <input type="radio" th:field="*{itemType}" class="form-check-input"> <label th:for="${#ids.prev('itemType')}" th:text="${type.description}" class="form-check-label"> BOOK </label> </div> 여기서 thymeleaf 로 Model 객체 내 에 있는 itemTypes 인 enm 배열을 받아서 사용하는거잖아요? 그러면 정적 값들을 하나도 적어놓을 필요가 없는데 왜 BOOK만 적어놓은건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 이런식으로 (안녕하세요 hello!!!) 가 안뜨고 (안녕하세요 null) 이 뜹니다. 뭐가 문제죵?
ArgumentResolver가 Interceptor를 대체할 수 있을까요?? 프로젝트가 커지면 커질 수록 제외할 패턴이나 인증이 필요한 라우터 패턴을 webconfig에 입력해줘서 관리를 계속 해줘야하는데 관련 DTO를 만들어서 해당 dto가 붙어있으면 인증이 필요한 메소드라는 것을 나타내면 인터셉터가 없이 ArgumentResolver로 대체가 가능하지 않을까하는 생각이 들어서요 그래서 이런 인증 수행을 인터셉터가 아니라 리졸버 안에서 해도 무방하지 않을까 생각하는데 ArgumentResolver와 Interceptor가 지향하는 것이 다르기 때문에 그렇게 하면 안되는 것이가 궁금해서 질문드립니다.
File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 193, in init super().__init__(*args, **kwargs2) django.db.utils.OperationalError: (1044, "Access denied for user 'django'@'%' to database 'django'") mariadb 컨테이너를 실행 후, django 컨테이너를 실행 시 위와 같은 오류가 발생합니다. 찾아보니 django 에 대한 권한이 없어서 그렇다고 하는데, 해결방법이 있을까요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 회원가입에서 spring1 , spring2 등록하고 회원 목록에 들어가면 #이름 만 뜹니다 ㅠㅠConsole 창에도 member = spring1 으로 잘 뜨는데 왜 안될까요?? 회원 목록에서 소스 보기하면 저 가운데가 코드가 안뜨는데 이거 때문일까요? 코드는 강의자료 그대로 복붙했습니다! 딱히 에러가 뜨는건 아니라 뭐가 잘못된지 모르겠네요 ㅠㅠ 구글 드라이브 첨부해드려요! https://drive.google.com/file/d/1s2D6rLue9yPAHlZbNnCFVKsv2aKGZtEX/view?usp=sharing 오류 해결했습니다^^;;; 주석처리된 부분이 있었네요 ...ㅠㅠㅎㅎㅎㅎㅎ
@TestMethodOrder(MethodOrderer.OrderAnnotation.class) class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); @Test public void save() { //given Member member = new Member(); member.setName("spring"); //when repository.save(member); //then Member result = repository.findById(member.getId()).get(); assertThat(result).isEqualTo(member); } @Test public void findByName() { //given Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); //when Member result = repository.findByName("spring1").get(); //then assertThat(result).isEqualTo(member1); } @Test public void findAll() { //given Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); //when List<Member> result = repository.findAll(); //then assertThat(result.size()).isEqualTo(2); } } 안녕하세요 지난 번에 동일한 질문을 올렸었는데 제가 설명을 명확하게 하지 않은 것 같아서 다시 올리게 되었습니다. "회원 서비스 테스트" 강의 중 내용입니다. 제가 헷갈리는 것은, 중복된 인스턴스명으로 인스턴스를 만드는데 왜 예외가 발생하지 않는가? 입니다. 예를 들어 아래 코드를 작성하면 Variable 'member1' is already defined in the scope라는 에러가 납니다. public void hello() { Member member1 = new Member(); Member member1 = new Member(); // Variable 'member1' is already defined in the scope } 다시 원래 코드로 되돌아와서, findAll()이 실행 후 member1 = "spring1", member2 = "spring2" 라는 인스턴스가 만들어집니다. 이후 findByName()을 실행할 때 밑에서 두번째 코드처럼 같은 이름인 member1으로 인스턴스를 만드는데 왜 에러가 발생하지 않는건가요? (findAll()에서 member1 생성 -> findByName()에서 member1 생성이 가능한 이유?) Member member1 = new Member(); // findAll() 에서 member1 생성 member1.setName("spring1"); // name 할당 ---------- Member member1 = new Member(); // 인스턴스명이 같은데도 불구하고 findAll() 에서 member1 생성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 양방향 매핑을 할 때와 단방향 매핑을 할 때의 성능 차이가 있나요? 그러니까, 단방향 매핑을 한 후, 각 엔티티의 레포지토리를 통해 명시적으로 조회하는 것과, 양방향 매핑을 한 후, get을 사용하여 조회하는 상황의 성능 차이에 대해 궁금합니다. 지연로딩을 사용하는 경우, 결국 나가는 쿼리 수는 같지 않나요?
안녕하세요 강의 중에 IntelliJ 가 제공하는 파라미터 이름이 다르게 보여서 질문 드립니다. 강의에서는 errorCode, 저는 s 현재 인텔리제이 2023.3.2 Ultimate 사용 중 입니다. 인텔리제이 자체에서 decompile 해주는거 같은데 혹시 다른 설정이 있는지 문의 드립니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] V5강의에서 HandlerAdapter가 HandlerMapping를 통해 모든 핸들러를 조회한 뒤 적절한 핸들러를 호출한다고 이해했습니다 그런데 이 강의에서는 정확히 어떤 역할을 하는 지 궁금합니다. SpringMemberFormControllerV1, SpringMemberListControllerV1를 V5 강의에서 보여주신 V3,V4로 생각하면 될까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 앞전의 영상까지는 테스트 환경 문제없이 했고 그 전의 강의도 문제 없이 하였습니다. 하지만 해당 강의 첫 부분 부터 회원가입(join0을 실행하면 해다 오류가 나옵니다. 17:08:49.341 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [com.example.test.Sevice.MemberServiceIntTest]: MemberServiceIntTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration. 17:08:49.463 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration com.example.test.TestApplication for test class com.example.test.Sevice.MemberServiceIntTest java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null) at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:84) at jdk.proxy2/jdk.proxy2.$Proxy72.getHandler(Unknown Source) at org.mockito.internal.util.MockUtil.getMockHandlerOrNull(MockUtil.java:158) at org.mockito.internal.util.MockUtil.isMock(MockUtil.java:147) at org.mockito.internal.util.DefaultMockingDetails.isMock(DefaultMockingDetails.java:32) at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:106) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:85) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:73) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.beforeTestMethod(ResetMocksTestExecutionListener.java:60) at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:320) at org.springframework.test.context.junit.jupiter.SpringExtension.beforeEach(SpringExtension.java:240) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Suppressed: java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null) at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:84) at jdk.proxy2/jdk.proxy2.$Proxy72.getHandler(Unknown Source) at org.mockito.internal.util.MockUtil.getMockHandlerOrNull(MockUtil.java:158) at org.mockito.internal.util.MockUtil.isMock(MockUtil.java:147) at org.mockito.internal.util.DefaultMockingDetails.isMock(DefaultMockingDetails.java:32) at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:106) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:85) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:73) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.afterTestMethod(ResetMocksTestExecutionListener.java:67) at org.springframework.test.context.TestContextManager.afterTestMethod(TestContextManager.java:487) at org.springframework.test.context.junit.jupiter.SpringExtension.afterEach(SpringExtension.java:278) ... 2 more Caused by: java.lang.IllegalStateException: Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:105) at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.getDefaultPlugin(DefaultMockitoPlugins.java:79) at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:75) at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:50) at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:27) at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:22) at org.mockito.internal.MockitoCore.<clinit>(MockitoCore.java:73) at org.mockito.Mockito.<clinit>(Mockito.java:1683) at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:105) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:85) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:73) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.beforeTestMethod(ResetMocksTestExecutionListener.java:60) at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:320) at org.springframework.test.context.junit.jupiter.SpringExtension.beforeEach(SpringExtension.java:240) ... 2 more Caused by: java.lang.reflect.InvocationTargetException at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:484) at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:103) ... 15 more Caused by: org.mockito.exceptions.base.MockitoInitializationException: Could not initialize inline Byte Buddy mock maker. It appears as if your JDK does not supply a working agent attachment mechanism. Java : 19 JVM vendor name : Oracle Corporation JVM vendor version : 19.0.1+10-21 JVM name : OpenJDK 64-Bit Server VM JVM version : 19.0.1+10-21 JVM info : mixed mode, sharing OS name : Windows 11 OS version : 10.0 at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<init>(InlineDelegateByteBuddyMockMaker.java:260) at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:23) ... 18 more Caused by: java.lang.IllegalStateException: Could not self-attach to current VM using external process at net.bytebuddy.agent.ByteBuddyAgent.installExternal(ByteBuddyAgent.java:706) at net.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:636) at net.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:616) at net.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:568) at net.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:545) at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<clinit>(InlineDelegateByteBuddyMockMaker.java:133) ... 19 more Caused by: [CIRCULAR REFERENCE: java.lang.IllegalStateException: Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker] 커뮤니티 찾아다니면서 혼자 해결할려했으나, 도저히 방법이 ㅇ없어서 질문드립니다 ㅠㅠ
선생님 안녕하세요! 5장 회귀 실습 2:캐글경연 주택가격 예측-Advanced Regression Techniques - 01 을 듣다가 타겟 값인 Price를 로그 변환하여 정규 분포 형태로 변환하고, 피처들 중 숫자형 컬럼의 Null 값 데이터 처리 부분 코드를 다음과 같이 썼습니다. 그런데 결과가 사진과 같이 float64가 포함된 형태로 나왔습니다. 제가 어떤 부분에서 잘못한 건지, 그리고 어떻게 해야 선생님과 같은 결과가 나올 수 있나요?ㅎㅎ # SalePrice 로그 변환 original_SalePrice = house_df['SalePrice'] house_df['SalePrice'] = np.log1p(house_df['SalePrice']) # Null이 너무 많은 컬럼들과 불필요한 컬럼 삭제 house_df.drop(['Id', 'PoolQC', 'MiscFeature', 'Alley', 'Fence', 'FireplaceQu'], axis=1, inplace=True) # Drop하지 않는 숫자형 Null 컬럼들은 평균 값으로 대체 num_columns = house_df.dtypes[house_df.dtypes !='object'].index.to_list() house_df[num_columns].fillna(house_df[num_columns].mean(), inplace=True) # Null 값이 있는 피처명과 타입을 추출 null_column_count = house_df.isnull().sum()[house_df.isnull().sum() > 0] print('## Null 피처의 Type :\n', house_df.dtypes[null_column_count.index])
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 왜 cd study를 경로를 찾을 수없다고 하나요? study를 c밑에 study에 저장했는데 ㅠ