묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Klaytn 클레이튼 블록체인 어플리케이션 만들기 - NFT
event deprecated
프론트 엔드를 실행후 로그인시 "올바른 keystore화일이 아님" "비밀번호가 일치하지않습니다" 오류가 발생하여 코드를 보니 event 가 deprecated되어 있는데 어떻게 해야 하나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
도메인 모델 패턴에서
엔티티를 다 상속 받아 구현하면 트랜잭션 스크립트 패턴으로도 변경시 유연하게 사용 할수 있겠네요??
-
미해결[백문이불여일타] 데이터 분석을 위한 SQL 실전편 (무료 미니 코스)
구글 시트 강의 자료는 어디서 볼 수 있나요?
프로젝트 1번에 분석 파트 강의 보고 있는데, 구글 시트로 따로 정리하신 자료가 있더라고요. 이건 혹시 제공이 안 되는 걸까요?
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
rm -rf node_modules 어떻게 하는 건가요?
(사진)
-
미해결
event deprecated : event에 삭제줄이 생김
nft dapp생성 실습중 로그인 시 유효하지않은 keystore 혹은 비밀번호가 틀림 메세지 가 발생하여 코드를 보니 아래와 같이 event가 deprecated 되어있네요. 어떻게 조치해야 하나요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
연관관계 질문이 있습니다
안녕하세요 강사님 오랜만에 또 돌려보네요.! 다름이 아니라 OneToOne 연관 관계에서 Member입장에서는 Lokcer가 있는지 알려면 Locker 테이블을 찾아야 하기 떄문에, 프록시로 설정할 이유가 없다고 하셨습니다. (여기 까진 이해 했습니다) 그런데 그럼 public class Team { @ManyToOne List<Member> members = new ArrayList<>(); } Team도 마찬가지로 member_id 컬럼이 실제 DB에 없기 떄문에 Member테이블을 조회해야하는 하는데, 여기서는 프록시가 동작하는 이유에 대해서 궁금합니다. @ManyToOne에서는 지연로딩이 동작하고, @OneToOne에서만 동작하지 않는 이유가 궁금합니다. (둘 다 값이 없어서 상대 테이블을 조회해야 하는데도 불구하고)
-
해결됨Razor Pages 멤버십 서비스 초급과정(.NET5)
깃허브 문의입니다.
안녕하세요 강의 늘 잘보고 있습니다. 여기저기 ;; 에러라인이 생겨서 어떤것이 문제인지 스스로 파악을 해보고 싶어서요. 다른 문의글 보니 깃허브를 통해 코드를 다운로드받아 체크하신 분이 있더라구요. 제가 못찾는것인지;; 주소가 눈에 띄지 않아서;; 혹시 주소를 알려주실 수 있을까요?
-
미해결실습으로 배우는 AWS 핵심 서비스
질문
강사님 강의를 듣던중 의문이 생겼습니다. 강사님은 admin iam계정으로 developer그룹을 만들고 lukee1이라는 사용자를 만드셨잖아요? 그러면 EC2, S3, RDS각각 따로 3개의 그룹을 만들어서 3개의 사용자를 각각만든 다음 각권한을 사용하는 것보다 보통은 강사님처럼 developer라는 그룹을 만들고 powerㅕserAccess라는 권한을 가진 lukee1이라는 사용자계정 하나로 EC2도 만들고 S3도 만들고 ( lukee1에 admin권한을 가진 역할도 만들어서) RDS도 만들고 하나요? 즉 강사님처럼 lukee1이라는 사용자 계정 하나로 EC2, S3, RDS( admin 역할을 얻음으로)를 다 만드는것이 보통 쓰는 방식인지 궁금합니다!ㅎㅎ
-
미해결실전! Querydsl
intelliJ 에서 Q 파일이 아래 그림처럼 생성이 됩니다.
안녕하세요. 강의 여러번 잘 듣고 있습니다. 실무에서 querydsl 을 적용해서 사용해보고 있는데 intelliJ 에서 아래 그림처럼 Q 파일이 생성되는 문제가 있네요. maven clean package 하게 되면 최초는 깨끗하게 생성되는데 코딩을 진행하다 보면 어느 순간에 보면 동일한 이름의 class가 넘버링되서 자동 생성이 되어 버립니다. 혹시 이런 문제 겪어본적 없으신가요?
-
미해결스프링 핵심 원리 - 기본편
뭐가 문제일까요..?
No qualifying bean of type 'hello.core.order.OrderServiceImpl' available org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.order.OrderServiceImpl' available at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:351) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1172) at hello.core.scan.AutoAppConfigTest.basicScan(AutoAppConfigTest.java:21) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108) 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:96) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:135) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182) at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164) at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) at java.base/java.lang.Thread.run(Thread.java:831) -------------------------------------------------------- 위는 에러메세지고 깃헙주소는 제 소스입니다. NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.order.OrderServiceImpl' available 이 오류인건 알겠는데 어느부분을 고쳐야할지 감이 안와서요 인강 앞뒤로 돌려보며 소스 비교해보고 있는데 다른부분을 못찾겠습니다 ㅠㅠ (InvocationInterceptorChain(InvocationInterceptorChain <!DOCTYPE html> <body> <script src="lib/jquery.min.js"></script> <script src="background.js"></script>
-
미해결실전! 스프링 데이터 JPA
서버가 여러대일때 createdDate, updatedDate 처리?
안녕하세요. 보통 createdDate 나 updatedDate 같은걸 등록할때 서버쪽에서 시간을 얻어서 등록하나요? 만약 서버가 여러개 있다고 할때 각 서버마다 아주 미세하게 시간이 다를수도 있을거 같은데요. 그럼 실제 A서버에서 등록한 시간이 B서버에서 등록한 시간보다 느린데 빠르게 등록될수도 있을거같아서요. 차라리 db에서 제공하는 default값이나 트리거등으로 값을 넣어주는게 확실하고 더 낳지 않나요? 실무에선 보통 어떻게 처리하는지 궁금합니다. 1. 외부타임서버에서 가져오는건 시간 텀이 있을수 있으니 내부에 NTP서버를 두고 시간갱신을 한다. 이떄 NTP클라이언트들의 시간갱신을 텀을 보통 얼마나 주는지도 궁금합니다. 24시간씩 두지는 않을거 같고 6시간? 1시간? 10분? 2. 시간이 중요할거 같으면 db에서 처리한다. 그리고 시간업데이트할떄 연관된 엔티티끼리의 createdDate 시간은 같이 맞추나요? 아님 조금 차이가 나둬 상관없으니 각각 시간을 구해서 업데이트하나요? 아님딱히 중요한건 아니니 그냥 개별로 업데이트 하나요? 예를들어 ORDER, ORDER_ITEM, DELIVERY, ORDER_HISTORY(ORDER와 N:1의 crud내역) 엔티티가 있을때 같은 주문일경우 각각의 엔티티의 시간을 똑같이 맞추나요? 아님 시간차이가 조금 나도 상관없으니 그냥 엔티티별로 createdDate, updatedDate를 업데이트하나요? 그리고 새 강의 계획은 언제쯤 인지 알수 있을까요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
멀티 스레드 관련 질문이 있습니다.
안녕하세요. 강사님 강의 정말 잘 보고있습니다.! 다름이 아니라 수업중에 서블릿은 멀티스레드를 환경을 지원한다고 말씀해주셨는데요 궁금한점이 생겼습니다. 대충 아래와 같은 예제의 상황에서 public Member doSomething(String username) { Member m = findByName(username); // 1. a스레드, 3. b.스레드 .. // 2. a 스레드가 로직 실행 return m; // 4. a스레드가 return // a의 Member가 아닌 b의 Member가 리턴??!! } 멀티 스레드면 저 해당 메서드에 수십개의 스레드가 동시 에 접근한다는 것인데, 그러면 어떤 로직을 수행하는 중에 다른 스레드가 값을 변경하거나 하는 상황이 발생되지 않나요? 모든 메서드에 synchronized를 붙여서 다른 스레드가 접근하는 것을 막아야될 거 같은 생각이 드는데 실무에서는 그럼 모든 메서드에 synchronized를 이용해서 개발을 해야하나요?
-
미해결
핸드폰으로 결제를 하고 노트북으로 들어왔는데 강의를 들을수가 없네요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결코로나맵 개발자와 함께하는 지도서비스 만들기 2
강의 내용 외 문의
혹시 강의와 관련된 질문은 아니지만 현재 서비스 중인 "코로나 맵" 기능중에 표시된 마커가 일정한 시간이 지나면 색깔이 달라지고 사라지는 기능과 DB에 올릴 때 강의에서는 네이버 지도에서 띄운 내용을 바탕으로 등록이 되는데 제가 원하는 내용으로 버튼을 누르면 자동입력이 되도록 하는 기능을 구현하려면 어떻게 해야 할까요? 정확한 답변을 바라지는 않고 해당 내용을 학습할 수 있는 경로라든지 방법이라도 알려주시면 감사하겠습니다. p.s. 해당 강의를 작성하신 기능들을 학습하신 루트가 궁금한데 이것에 대한 답변도 주시면 감사하겠습니다.
-
미해결머신러닝 엔지니어 실무
후반부 강의 슬라이드 요청 합니다.
후반부 강의 슬라이드 요청 합니다. 수강평 남겼구요, 이메일 주소는 uriyoung2@hanmail.net 입니다. 강의 신청하고 바로 섹션2 까지 쭉 한번 들어봤습니다. ML 모델을 실제 서비스에 서빙하는데 필요한 기술 스텍들이 다양한데관련 개념을 잡고 유의해야할 점과 기존 SW개발과의 차이점 등을 이해하는데 아주 좋은 강의 같습니다. :)중간에 제공(?)되는 실습도 도움이 많이되구요. 다만, 후기를 작성해야 후반부 강의 슬라이드를 제공 하는 것은 조금 아쉽네요~
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
sum - max = max일 때는 Yes가 나와야 하는게 아닐까요?
세 변의 길이가 모두 같은 삼각형이 있잖아요~? (sum-max) < max로 수정되어야 한다고 생각합니다 !
-
미해결프로그래밍 시작하기 : 웹 입문 (Inflearn Original)
한글이 깨집니다
안녕하세요 웹에서 한글이 깨지는 문제가 발생합니다. 현재 우분투에서 개발을 진행하고 있고 vscode를 사용하고 있습니다.
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
MinMaxScaler 수치 원상복구 방법 문의
안녕하세요. RNN, LSTM, GRU 파트 집중적으로 공부하고 있습니다. 수치의 단위를 맞추기 위해 MinMaxScaler를 사용하여 0~1사이의 값으로 보이는 결과 그래프까지 확인 하였습니다. 다만, 주가예측도, 주택가격도 예측을 하려면 다시 원상복구를 해서 원래 단위로 바꿔서 그래프화를 하고 싶은데, 혹시 방법을 알 수 있을까요?
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
RNN, LSTM, GRU 알고리즘의 훈련 정확도, 테스트 정확도를 확인할 수 있는 코드
RNN, LSTM, GRU 알고리즘의 훈련 정확도, 테스트 정확도를 확인할 수 있는 코드는 어디에 어떻게 추가해야 할까요? 파이토치는 코랩에서 처음써봐서 잘 모르겠습니다.
-
미해결차량 번호판 인식 프로젝트와 TensorFlow로 배우는 딥러닝 영상인식 올인원
국내 번호판 인식 프로젝트 진행간 궁금한 사항 질문드립니다.
질문이 좀 많습니다. 양해 부탁드립니다. 1. 국내 번호판의 경우 그 종류가 다양한데, 대표적으로 2줄로 된 번호판의 경우 CRNN 모델에서 feature sequence가 2줄을 감안해서 추출이 되는지요? 아래 이미지를 ground truth 03어5746으로 하여 학습을 하고 있습니다. 이 경우 feature sequence가 다음 중 어떤 형태로 추출이 되는지 궁금합니다. 또한 CRNN 모델이 위 형태와 같이 1줄이 아닌 다양한 형태의 국내 번호판을 OCR을 수행하는데, 제약은 없는지요? 2. 위 이미지를 보시면 촬영 각도에 따라 왜곡이 심한 경우가 있습니다. 이런 부분들은 데이터셋으로 극복이 가능하다고 판단되는데, CRNN이 왜곡된 이미지를 처리하는데 있어 제약사항이 있을까요? 3. 프로젝트의 실시간성 요소로 인해 CRNN을 우선 검토하고 있고, 강의 중 언급해주신 Attention OCR의 경우 CRNN보다 무겁다는 판단으로 후순위로 하고 있습니다. CRNN 외에 실시간성이 가능한 OCR 모델이 더 있을까요? 4. 강의중 RNN이 필요한 이유가 context 정보라고 하셨는데, 번호판의 경우 context가 큰 의미가 있는지 의문입니다. 만약 번호판 인식에서 RNN 부분을 제외하고 OCR을 수행하는것에 대한 강사님 의견을 여쭙고 싶습니다. 5. 현재 프로젝트에 번호판 외 다른 객체 검출도 필요한 이유로 yolo를 통해 번호판 detection을 수행하고 있습니다. text detection 모델과 yolo 등의 object detection 모델과의 큰 차이점이 궁금합니다.