저는 늘 스프링에서 controller -> Service -> ServiceImpl -> Dao -> mapper.xml 이렇게 개발해왔었는데 강의에선 파일명칭?이 달라서 여쭤봅니다. Repository는 dao에서 @Repository로 사용했었는데요 아래 소스의 Repository(MemberRepository)는 위 순서에서 dao에 해당하는 거고 MemoryMemberRepository는 daoImpl (daoImpl,,, 서비스 Impl 하는 것처럼 dao의 구현체 정도라고 생각하면 될까요?
질문 -> //1. 2의 거듭제곱 반복문을 이렇게 만들어도 될까요? //2. 2^1, 2^2까지의 총합: ... 입니다. 출력되는 말을 다르게 하고 싶은 데 if 문이 너무 길어집니다. if 문 짧게 하고 만들고 싶습니다. public class _05_For { public static void main(String[] args) { //생각나서 만든 2의 거듭제곱 For 문 // 2의 0승부터 2의 10승까지의 합: 2047이 나와야 한다. // 출력되는 문장들의 말을 다르게 하고 싶다 2^1, 2^2까지의 총합: 이런 식으로 int Sum = 0; for (int s = 0; s < 11; s++) { Sum += Math.pow(2, s); //거듭제곱을 계산하기 위해 Math.pow함수(?)를 가져옴 if(s == 0) { System.out.println("2^0까지의 총합: " + Sum + " 입니다."); } else if (s == 1) { System.out.println("2^1까지의 총합: " + Sum + " 입니다."); } else if (s == 2) { System.out.println("2^2까지의 총합: " + Sum + " 입니다."); } // 2^10까지 표현하기에는 조건문이 너무 많아짐, 줄이는 방법을 알고 싶다. } System.out.println("2^의 1부터 10까지, 모든 수의 총합: " + Sum + " 입니다."); } }
안녕하세요. 현재 실무 소스가 모두 @Autowired 를 통해 주입이 되어있는데요. 여러 사람의 손을 거쳐가서 그런지 DI가 10개가 넘는 클래스도 있습니다. 이럴 경우에도 생성자 주입으로 모두 사용하나요? 의존관계가 너무 많으면 생성자 메소드가 너무 길어져서 가독성이 안좋아질텐데 이럴 때 어떻게 하는지 궁금합니다!
[질문 내용] 여기에 질문 내용을 남겨주세요. 항상 궁금했던건데, 인터페이스의 구현체에서, 구현체 자체 메서드가 있는 구현체들도 있는데, 변경 용이성때문에 항상 상위 타입으로 선언하는건가요? 예를들어, 인터페이스 Map에는 clone메서드가 없고, HashMap에는 clone 메서드가 있는데, Map으로 선언하면, HashMap 자체 메서드들은 사용못하게되는데 구현체 자체 메서드를 사용할 상황도 있을거같은데, 항상 구현 객체 생성할때 상위로 선언하는 이유가 궁금합니다. 구현체 기능을 더 사용한다 vs 변경에 용이하게한다. 둘다 비슷한 느낌이여서 뭐에 우위를 두고 선정해야할지 잘모르겠습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. See https://docs.gradle.org/7.6.1/userguide/command_line_interface.html#sec:command_line_warnings BUILD SUCCESSFUL in 24s 3 actionable tasks: 3 executed 오후 10:07:38: Execution finished ':CoreApplication.main()'. coreApplication 실행했더니 밑에 이렇게 나왔는데 괜찮나요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 그러면 결국 어노테이션으로 스프링에 인식하게 해서 스프링 컨테이너에 빈으로 관리하게 되면 좋은 객체 지향 설계의 5가지 원칙의 적용을 충족하는거죠?
함수형 인터페이스(전반전) 강의를 듣는 도중 pulbic static void convertUSD(Convertible converter, int USD) { converter.convert(USD); } 메소드가 어떤식으로 동작되는지 궁금합니다. 추가로 클래스를 생성하고 객체 생성 후 객체를 어떠한 메소드의 변수로 넣었을 때 어떤 식으로 동작되는지 어떨때 사용하는지 예시로 알려주신다면 정말 감사합니다..
저번에 퀴즈 풀다가 static 관련해서 오류가나서 질문한적이 있는데요. 이번에도 static관련해서 오류가 났습니다 ㅜㅜ 선생님과 소스코드는 똑같이 쳤는데도 오류가 나네요 위의 사진처럼 class Student에 static을 붙이지 않으니까 non-static 변수라서 참조가 안된다는 내용의 오류가 떠서 static을 추가하니까 아래 사진처럼 결과가 나왔는데요. 혹시 어떤게 문제일까요 ㅠㅠ?
문자열 String을 객체 생성하여 String str = new String(); 과 Strign str = ""; 이렇게 생성하는 방식중에 무엇이 더 적합한지요? 그리고 두개방식의 차이점이 무엇인지 궁금합니다. 문자열을 담을 수 있는 변수가 필요할때 어떻게 사용하는게 더 나은것인지에 대한 질문입니다.
제가 수정해서 만든 코드들도 정상적으로 작동하는 데 '나도코딩'님이 예시로 준 코드와 차이점이 뭔가요? 제 코드가 메모리를 더 차지해서 이런 방법으로 쓰진 않나요? 퀴즈 3번의 예시가 indexOf를 사용할 필요가 없을 정도로 간단해서 쓸 필요가 없는 건가요? public class _Quiz_03 { public static void main(String[] args) { String B01 = "901231-1234569"; //하이픈을 포함한 정수(숫자)들을 문자열로 만들기 위해 변수 String 사용 String B02 = "030708-4567890"; //하이픈을 포함한 정수(숫자)들을 문자열로 만들기 위해 변수 String 사용 // System.out.println("김영희님의 주민번호는 " + B01.substring(B01.indexOf("9"), B01.indexOf("2", 6)) + " 입니다."); System.out.println("김철수님의 주민번호는 " + B02.substring(B02.indexOf("0",0), B02.indexOf( "5", 5)) + " 입니다."); // (내가 처음 만든 방식) 잘 작동은 되지만 코드가 길어서 메모리를 더 잡아 먹는다. //indexOf( "찾을 특정 문자" , "시작할 위치" ) 이런식으로 사용해 주면된다. //"시작할 위치" 같은경우는 생략이 가능하며 생략할 경우 0번째 즉 처음부터 찾기 시작한다. System.out.println(B01.substring(B01.indexOf("9"),B01.indexOf("2", 4))); System.out.println(B02.substring(B02.indexOf("0"), B02.indexOf("5"))); //(수정된 방법) //(나도코딩님 예시) String id = "901231-1234569"; System.out.println(id.substring(0,8)); //0 위칩터 8위치 직전가지 } }
선생님 안녕하세요. 생성자 강의에서 아래 캡처한 부분 설명해주시는 과정에서 기본생성자인 Blackbox()의 중괄호 안에 this("모델명", "해상도", ...) 라고 선생님이 입력하신 내용을 저도 따라 입력해 봤는데요. 제 경우에는 Recursive Constructor Invocation라는 에러 메시지가 뜨는 데 어떻게 해야 문제를 해결할 수 있을까요?
안녕하세요 나도코딩 선생님...ㅎ 몇 주전에 나도코딩 자바편 강의를 완강하고 다시 2회차로 강의를 듣는 중입니다...ㅎ 추상 클래스 (abstract class)와 인터페이스(interface) 관련 강의를 들으면서 각각의 특징들 및 차이점들에 대해서 다시 조금씩 알아가고 있는데... (예를 들면, 추상클래스는 abstract 키워드를 가지고, abstract메소드를 가지고 있어서 객체를 생성할 수 없는 반면, 인터페이스(interface)는 보통 -able 키워드, 변수 X, 생성자 X, 오로지 메소드만 있다 등) 이 둘, 그러니까 추상 클래스 (abstract class)와 인터페이스(interface)는 '어느 때 (또는 어느 시점)'에 활용하는게 가장 적절한지 디테일하게 알 수 없을까요? 항상 좋은 강의와 답변 감사합니다...ㅎ
안녕하세요 수업 중 영한님께서 4분경에 전체 Test코드 돌려보실 때 오류가 안 뜨는데 저는 UnsatisfiedDependencyException 오류가 발생합니다. 같은 타입의 빈이 2개 있어서 어떤걸 주입해야하는지 모르는 것 같아서 발생하는 것 같습니다... 그런데 어느 부분을 손대야 할지 모르겠습니다ㅠㅜ.... Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [C:\Inprun_SpringCore\core\out\production\classes\hello\core\member\MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,MemberRepository [MemberServiceImpl] [MemoryMemberRepository] [AutoAppConfig] [AppConfig] java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext( DefaultCacheAwareContextLoaderDelegate.java:98 ) at org.springframework.test.context.support .DefaultTestContext.getApplicationContext( DefaultTestContext.java:124 ) at org.springframework.test.context.support .DependencyInjectionTestExecutionListener.injectDependencies( DependencyInjectionTestExecutionListener.java:118 ) at org.springframework.test.context.support .DependencyInjectionTestExecutionListener.prepareTestInstance( DependencyInjectionTestExecutionListener.java:83 ) at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance( SpringBootDependencyInjectionTestExecutionListener.java:43 ) at org.springframework.test.context.TestContextManager.prepareTestInstance( TestContextManager.java:248 ) at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance( SpringExtension.java:138 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$8( ClassBasedTestDescriptor.java:363 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable( ClassBasedTestDescriptor.java:368 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$9( ClassBasedTestDescriptor.java:363 ) at java.base/java.util.stream.ReferencePipeline$3$1.accept( ReferencePipeline.java:195 ) at java.base/java.util.stream.ReferencePipeline$2$1.accept( ReferencePipeline.java:177 ) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining( ArrayList.java:1655 ) at java.base/java.util.stream.AbstractPipeline.copyInto( AbstractPipeline.java:484 ) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto( AbstractPipeline.java:474 ) at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining( StreamSpliterators.java:312 ) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining( Streams.java:735 ) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining( Streams.java:734 ) at java.base/java.util.stream.ReferencePipeline$Head.forEach( ReferencePipeline.java:658 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestInstancePostProcessors( ClassBasedTestDescriptor.java:362 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$instantiateAndPostProcessTestInstance$6( ClassBasedTestDescriptor.java:283 ) at org.junit.platform.engine.support .hierarchical.ThrowableCollector.execute( ThrowableCollector.java:73 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance( ClassBasedTestDescriptor.java:282 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$4( ClassBasedTestDescriptor.java:272 ) at java.base/java.util.Optional.orElseGet( Optional.java:369 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$5( ClassBasedTestDescriptor.java:271 ) at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances( TestInstancesProvider.java:31 ) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$0( TestMethodTestDescriptor.java:102 ) at org.junit.platform.engine.support .hierarchical.ThrowableCollector.execute( ThrowableCollector.java:73 ) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare( TestMethodTestDescriptor.java:101 ) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare( TestMethodTestDescriptor.java:66 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.lambda$prepare$2( NodeTestTask.java:123 ) at org.junit.platform.engine.support .hierarchical.ThrowableCollector.execute( ThrowableCollector.java:73 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.prepare( NodeTestTask.java:123 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.execute( NodeTestTask.java:90 ) at java.base/java.util.ArrayList.forEach( ArrayList.java:1541 ) at org.junit.platform.engine.support .hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll( SameThreadHierarchicalTestExecutorService.java:41 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.lambda$executeRecursively$6( NodeTestTask.java:155 ) at org.junit.platform.engine.support .hierarchical.ThrowableCollector.execute( ThrowableCollector.java:73 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.lambda$executeRecursively$8( NodeTestTask.java:141 ) at org.junit.platform.engine.support .hierarchical.Node.around( Node.java:137 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.lambda$executeRecursively$9( NodeTestTask.java:139 ) at org.junit.platform.engine.support .hierarchical.ThrowableCollector.execute( ThrowableCollector.java:73 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.executeRecursively( NodeTestTask.java:138 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.execute( NodeTestTask.java:95 ) at java.base/java.util.ArrayList.forEach( ArrayList.java:1541 ) at org.junit.platform.engine.support .hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll( SameThreadHierarchicalTestExecutorService.java:41 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.lambda$executeRecursively$6( NodeTestTask.java:155 ) at org.junit.platform.engine.support .hierarchical.ThrowableCollector.execute( ThrowableCollector.java:73 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.lambda$executeRecursively$8( NodeTestTask.java:141 ) at org.junit.platform.engine.support .hierarchical.Node.around( Node.java:137 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.lambda$executeRecursively$9( NodeTestTask.java:139 ) at org.junit.platform.engine.support .hierarchical.ThrowableCollector.execute( ThrowableCollector.java:73 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.executeRecursively( NodeTestTask.java:138 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.execute( NodeTestTask.java:95 ) at org.junit.platform.engine.support .hierarchical.SameThreadHierarchicalTestExecutorService.submit( SameThreadHierarchicalTestExecutorService.java:35 ) at org.junit.platform.engine.support .hierarchical.HierarchicalTestExecutor.execute( HierarchicalTestExecutor.java:57 ) at org.junit.platform.engine.support .hierarchical.HierarchicalTestEngine.execute( HierarchicalTestEngine.java:54 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute( EngineExecutionOrchestrator.java:107 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute( EngineExecutionOrchestrator.java:88 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0( EngineExecutionOrchestrator.java:54 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams( EngineExecutionOrchestrator.java:67 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute( EngineExecutionOrchestrator.java:52 ) at org.junit.platform.launcher.core.DefaultLauncher.execute( DefaultLauncher.java:114 ) at org.junit.platform.launcher.core.DefaultLauncher.execute( DefaultLauncher.java:86 ) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute( DefaultLauncherSession.java:86 ) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute( SessionPerRequestLauncher.java:53 ) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs( JUnit5IdeaTestRunner.java:57 ) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute( IdeaTestRunner.java:38 ) at com.intellij.rt.execution.junit.TestsRepeater.repeat( TestsRepeater.java:11 ) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs( IdeaTestRunner.java:35 ) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart( JUnitStarter.java:235 ) at com.intellij.rt.junit.JUnitStarter.main( JUnitStarter.java:54 ) Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [C:\Inprun_SpringCore\core\out\production\classes\hello\core\member\MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,MemberRepository at org.springframework.beans.factory.support .ConstructorResolver.createArgumentArray( ConstructorResolver.java:800 ) at org.springframework.beans.factory.support .ConstructorResolver.autowireConstructor( ConstructorResolver.java:229 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.autowireConstructor( AbstractAutowireCapableBeanFactory.java:1372 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBeanInstance( AbstractAutowireCapableBeanFactory.java:1222 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.doCreateBean( AbstractAutowireCapableBeanFactory.java:582 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBean( AbstractAutowireCapableBeanFactory.java:542 ) at org.springframework.beans.factory.support .AbstractBeanFactory.lambda$doGetBean$0( AbstractBeanFactory.java:335 ) at org.springframework.beans.factory.support .DefaultSingletonBeanRegistry.getSingleton( DefaultSingletonBeanRegistry.java:234 ) at org.springframework.beans.factory.support .AbstractBeanFactory.doGetBean( AbstractBeanFactory.java:333 ) at org.springframework.beans.factory.support .AbstractBeanFactory.getBean( AbstractBeanFactory.java:208 ) at org.springframework.beans.factory.support .DefaultListableBeanFactory.preInstantiateSingletons( DefaultListableBeanFactory.java:955 ) at org.springframework.context.support .AbstractApplicationContext.finishBeanFactoryInitialization( AbstractApplicationContext.java:918 ) at org.springframework.context.support .AbstractApplicationContext.refresh( AbstractApplicationContext.java:583 ) at org.springframework.boot.SpringApplication.refresh( SpringApplication.java:731 ) at org.springframework.boot.SpringApplication.refreshContext( SpringApplication.java:408 ) at org.springframework.boot.SpringApplication.run ( SpringApplication.java:307 ) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext( SpringBootContextLoader.java:136 ) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal( DefaultCacheAwareContextLoaderDelegate.java:141 ) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext( DefaultCacheAwareContextLoaderDelegate.java:90 ) ... 72 more Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,MemberRepository at org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique( DependencyDescriptor.java:220 ) at org.springframework.beans.factory.support .DefaultListableBeanFactory.doResolveDependency( DefaultListableBeanFactory.java:1369 ) at org.springframework.beans.factory.support .DefaultListableBeanFactory.resolveDependency( DefaultListableBeanFactory.java:1311 ) at org.springframework.beans.factory.support .ConstructorResolver.resolveAutowiredArgument( ConstructorResolver.java:887 ) at org.springframework.beans.factory.support .ConstructorResolver.createArgumentArray( ConstructorResolver.java:791 ) ... 90 more
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 다른 질문에 달려있는 답변을 봐도 잘 이해가 가지 않아서 질문드립니다. https://www.inflearn.com/questions/257297/testconfig-%ED%81%B4%EB%9E%98%EC%8A%A4%EC%97%90%EC%84%9C-static%EC%9D%84-%EB%96%BC%EB%B2%84%EB%A6%AC%EB%A9%B4 위의 링크 답변을 참고해도 이해가 잘 가지 않아 질문 드립니다. static이 아닌 innerclass는 outerclass 인스턴스를 생성해서 접근이 가능하다고 합니다. 반면 static innerclass의 경우 outreclass이름.innerclass로 outerclass 인스턴스를 생성하지 않고 접근할 수 있다고합니다. AnnotationConfigApplicationContext(TestConfig.class); 의 경우 TestConfig.class을 받아서 빈을 등록하는 걸로 알고있는데 static innerclass가 아닌 일반 innerclass로 넣을 경우 안되는 이유가 외부참조가 필요하기 때문인건가요? 그러면 static innerclass 인스턴스를 생성할때 outerclass이름.innerclass() 형태로 생성해야 할텐데 이 경우는 문제가 안되는 건가요?