묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! Querydsl
객체설계에 대해서 질문이 있습니다.
안녕하세요. 김영한 강사님. 강사님이 올려주신 강의를 잘 듣고 있습니다. 궁금한 부분은 JPA를 사용하고 있는 현업에서는 어떻게 설계하며, 개발을 진행하는지입니다. 우선 제 상황을 간단하게 말씀드리면 업무요건을 확인하면서 아래의 단계로 설계를 진행합니다. 1. 개념데이터 모델링 - 주 목적은 업무요건에 맞춰서 엔터티가 잘 도출되었는지 확인합니다. 2. 논리데이터 모델링 - 주제영역 , 엔터티 정의, 엔터티관계 정의(1:1, 1:N), 속성정의(식별자도출), 역정규화 등등 - 메타데이터(표준단어, 표준용어, 도메인,유효값) 한글(영문)명 생성 3. 물리데이터 모델링 - 논리데이터 모델링을 기준으로 물리데이터 생성합니다. 위 단계처럼 계속적으로 업무요건에 맞게 논리데티터 모델링을 진행하고, 최종적으로 물리데이터 모델링을 진행후 에 개발을 진행합니다. 질문-1) 궁금한건 JPA DDD 기반으로 설계를 하는경우에도 위 단계처럼 엔터티 설계 후 객체(Entity)를 테이블 기준으로 생성하는지요? 아니면 객체와 테이블을 나누어서 영역별로 설계를 진행하는지요? 객체와 테이블간의 설계 순서가 있는지 궁금합니다. 질문-2) 만약 위 질문-1)처럼 테이블 설계 후 객체(Entity) 설계를 진행하는경우 객체의 필드를 테이블기준으로 컬럼매핑한다면 맵핑관계에서 객체필드의 속성들을 테이블속성에 위임하는지요? 즉, 물리테이블 생성 시 컬럼사이즈, not null, default, unique index 정의 해놓고 추가적으로 객체에도 컬럼 어노테이션으로 추가적으로 설정을 하는지요. 아니면 테이블 속성에 위임을 하는지 궁금합니다. 질문-3) 객체별 식별자는 @ID Long ID 를 정의해서 수업을 진행하셨는데 보통 pk는 어떤 규칙으로 생성하는지 궁금합니다. - 어떤 교재에서는 독립엔터티인경우 인조키로 생성하여 종속 혹은 교차엔터티는 부모의 식별자를 상속(pk) or 비상속(fk)받거나, 하위 엔터티와의 연관관계가 깊어지면 연결관계를 끊고 인조키를 생성한다고 합니다. - 근데 또 어떤분들은 인조키만으로도 충분하다고 하시면서 모든 테이블(독립/교차/종속 전체)들을 모두 인조키로만 생성하여 진행한다고도 합니다. 질문-4) JPA 영속성 컨텍스트(SQL 저장소,1차캐시)는 지연 및 변경을 이용하여 SQL를 직접 사용하지 않고 Jpql, Flush, Transaction 등 특정 이벤트가 발생하면 jpa가 쿼리를 직접 수행하는걸로 이했습니다. 정말 개발자에게는 등록/수정/조회/삭제 등 쿼리 작성하지 않고 비지니스 로직처리에 집중한다고 하는데 좋은 기술인거 같습니다. 만약 영속성 컨텍스트를 사용하여 특정 객체를 조회하면 추가적으로 동일 객체를 조회하게 된다면 영속성 컨텍스트에 있는 객체가 조회된다고 이해하였습니다. (참조값동일) 하지만 만약 누군가가 이미 동일 객체를 변경하여 오라클 버퍼캐쉬 및 디스크까지 저장된 상태라면 어떻게 되는지요? 트랜잭션 격리성이 "Non-Repeatable Rad" 인지요? 영속성 컨텍스트가 변경감지를 통해서 동일객체가 변경되었다는걸 알고 db에서 재조회를 한 이후에 영속성컨텍스트에 재적재를 하는지 잘 이해가 되지 않아서 질문드립니다. (참고 16.1.1 트랜잭션과 격리수준) 감사합니다.
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
CV 세트 기반 스태킹
안녕하세요. CV 세트 기반의 스태킹에서 질문이 있습니다. 책 284p를 보면 '첫 번째, 두 번쨰, 세 번째 반복을 수행하면서학습 폴드 데이터로 학습된개별 모델이 원본 테스트 세트로 예측한 결괏값을 최종 평균하여 메타 모델에서 사용될 테스트를 만든다'라고 나와있습니다! 여기서 최종 평균을 한다는 것은 hard voting처럼 다수결로 최종 예측 값을 결정하게 되는 것인가요?! 아니면 soft voting처럼 평균 값을 내서 최종 예측 값을 결정하게 되는 것인지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 컨텍스트와 트랜잭션 관련 질문 있습니다.
안녕하세요 JPA 를 공부를 하다가 영속성 컨텍스트의 기본 전략은 트렌잭션 범위라고 알고 있어 테스트 코드를 작성해 실행해 본 결과 아래와 같은 코드에서 select 문이 안 나가는 걸 볼 수 있었습니다.select 문이 안 나가는 것은 영속성 컨텍스트 안에서 가져온 객체라고 볼 수 있는데 save와 select 가 각각 다른 트랜젝션 단위에서 작동을 하는데 왜 이런 결과가 나오는 건가요..? 테스트 코드 git 주소 첨부드립니다. ( test3 메소드 )깃 주소 @Test @DisplayName("영속성 컨텍스트 1차 캐시 - 트랜잭션이 다른 경우 - 1차 캐시 사용 불가") void test3() throws Exception{ User user = User.builder().nickname("유저 1").build(); save(user); // 트랜잭션 1 //select 문이 나가야 함 // 트랜잭션 2 User findUser = find(user.getId()); //다른 객체라고 나와야하는데 select 문이 안나가고 같은 객체가 나오는 걸 보니 영속성 컨텍스트 안에서 동작 중임 log.info("{} - {}",user.hashCode(), findUser.hashCode()); assertThat(user, is(not(equalTo(findUser)))); } @Transactional(propagation = Propagation.REQUIRES_NEW) void save(User user){ userRepository.save(user); } @Transactional(propagation = Propagation.REQUIRES_NEW) User find(Long id) throws NotFoundException { return userRepository.findById(id).orElseThrow(() -> new NotFoundException("not found Exception")); }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JdbcTemplate 사용 시 쿼리 보관
안녕하세요. 좋은 강의 감사합니다. 프로젝트에서 DB 접속을 JdbcTemplate를 사용한다면 쿼리를 개발자가 작성해야 할 텐데, sql 쿼리가 길고 많아질 경우 @Repository 가 붙은 class 메서드마다 쿼리를 정의하면 코드가 너무 지저분할 거 같은데, 그럴 경우 실무에서는 어떻게 관리를 하는지 궁금합니다. (별도의 static 쿼리 클래스를 만든다든지, 아니면 안드로이드처럼 string.xml 같은 걸 사용한다든지 그런 방법이 궁금합니다)
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
로그인 후 session cookie가 전달되지 않는 것 같습니다.
안녕하세요 제로초님, 강의를 듣고 응용하여 저만의 서비스를 만드는 중입니다. 현재 간단하게 EC2에 올려서 테스트를 하는 중입니다. 서버는 80번 포트로 클라이언트는 3000번 포트로 구동되고 있습니다. 프론트 사가 쪽에서 withCredentials true로 설정해둔 상태입니다. 로그인 시 잘 되고 유저 정보도 받아 오는데 그 이후에 로그인이 유지되어야 진행되는 요청에서 계속 401에러가 발생합니다. session 내부에 cookie : { httpOnly: true, sameSite: 'none', secure: true } 넣고 테스트 해보았었는데 그때도 위처럼 동작하며 제대로 수행되지 않았습니다. 전부 로컬에서 실행시켰을 때는 잘 돌아갔는데 EC2에 올리고 나니 문제가 발생해서;; 조금 당황스럽습니다. 혹시 짐작가는 부분이 있다면 알려주시겠습니까?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
atom package install 에러 문의
안녕하세요 Atom설치 후 pacakge를 설치하는데 아래와 같은 에러가 발생하고 있습니다. 어떻게 하면 좋을지 가이드를 부탁드립니다~~ Installing “autocomplete-python@1.17.0” failed.Hide output… assert.js:92 throw new AssertionError(obj); ^ AssertionError [ERR_ASSERTION]: Expected there to only be one child in node_modules at C:\Users\hc.lee\AppData\Local\atom\app-1.58.0\resources\app\apm\lib\install.js:125:22 at ChildProcess.onChildExit (C:\Users\hc.lee\AppData\Local\atom\app-1.58.0\resources\app\apm\lib\command.js:52:49) at ChildProcess.emit (events.js:223:5) at maybeClose (internal/child_process.js:1021:16) at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5) { generatedMessage: false, code: 'ERR_ASSERTION', actual: 2, expected: 1, operator: '=='
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
addForm 메소드 질문입니다!
안녕하세요 강사님! 이번 강의를 듣고 질문이 있어 글을 씁니다. addForm 메소드에서 파라미터로 Model 을 받아서, Item 객체를 생성한 뒤 model.addAttribute 메소드로 Item 객체를 모델에 추가하여 뷰에서 Item 객체에 접근할 수 있다 라고 이해하였는데요. 그래서 뷰 쪽에서 th:object 속성으로 item 객체를 받아서 사용하구요. 제가 궁금한 부분은 addForm 메소드에서 파라미터로 @ModelAttribute 어노테이션을 사용하여 item 객체를 선언하면 동일하게 동작하는 것 같은데 이렇게 써도 되나요? 저번 mvc 1강에서 @ModelAttribute 을 사용하면 해당 객체를 생성해주고, 요청 파라미터의 값을 바인딩 해주고, 모델에까지 추가를 해준다고 들어서요. 여기선 요청 파라미터는 없어서 바인딩은 없을것 같지만 사용자가 임의로 URL에 쿼리스트링을 입력하면 문제가 되려나요? ;ㅁ; @GetMapping("/add")public String addForm(@ModelAttribute Item item) { return "form/addForm";}
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
i = 0 ??
안녕하세요 삽입정렬 강의 듣던중 질문입니다i=0으로 시작하셨는데 1부터 시작하는 것 아닌가요??코드 작성전에 원리 설명하실때 i는 1 부터 시작했던것같아서요!
-
미해결홍정모의 따라하며 배우는 C언어
손으로 입력하기에는 버거운 상수 배열을 정의하는 방법이 있을까요?
공부를 하다보니까 python의 딕셔너리 같은 기능을 구현 하려고 시도했습니다. 상수 배열 2개를 정의 하려고 하는데 1개는 배열의 원소들이 규칙이 있어서 루프문을 통해 정의하려고 시도했지만.. 상수 배열의 원소는 변경이 안되서 잘 안되더라구요. 그래서 임시로 배열을 만들어서 루프문을 통해 배열을 만들고 나서 상수배열을 정의할때 임시배열의 이름을 가지고 할당하려고 했습니다. 그러나 이것도 컴파일자체가 안되더라구요.. 어떤 방법이 있을까요? 만들려고 시도했던 프로그램은 콘솔창에 스트링을 입력하면 그 스트링을 모스부호로 바꿔서 콘솔창에 출력해주는 것이였습니다.
-
미해결[하루 10분|Web Project] HTML/JS/CSS로 나만의 심리테스트 사이트 만들기
atom.io 패키지 설치 오류가 발생합니다.
Installing “emmet@2.4.3” failed.Show output… Compiler tools not found Packages that depend on modules that contain C/C++ code will fail to install. Read here for instructions on installing Python and Visual Studio. Run apm install --check after installing to test compiling a native module. ㅇatom.io 에서 Install-packages 에서 emmet, atom beatuy를 설치하려고 했으나, 이런 오류가 나옵니다. 혹시 어떻게 해야하는지 아실까요..? ㅠ
-
미해결스프링 핵심 원리 - 기본편
롬복의 @RequiredArgsConstructor을 사용할때는 @Qualifier 사용을 할수 없는건가요?
생성자를 명시할수 없으니 혹시 이런식으로 해야되나 해서 붙여봤는데 적용이 안되는거 같더라구요 롬복을 쓸때는 @Qualifier 애노테이션을 쓸 수 없는건지 아니면 다른 방법이 있는건지 궁금합니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
선생님 안녕하세요 abstract 를 붙히는 이유을 좀 여쭤볼 수 있을까요??
Item 엔티티에 abstract를 붙히는 것과 안붙히는 것의 차이를 좀 여쭤볼 수 있을까요?... .. abstract를 붙히신 이유를 좀 여쭙고 싶습니다..
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
이 문제에서 "한번이라도 같은 반"이 란 조건이 없으면 어떻게 하죠?
안녕하세요, 선생님. 강의 잘 듣고 있습니다. 다름이 아니오라, 코드중에 break를 집어넣는 이유가 문제에서 "한번이라도 같은 반" 라는 조건이 있어서 가능한것 같은데요. 같은 학년에서는 더 이상 카운트 할 필요가 없으니까요. 만일에 문제가 "한번이라도" 란 말이 없으면 어떻게 하죠? 그냥 break 만 빼면 될까요? 아니면 전체 로직에 손을 봐야 할까요?
-
미해결[라즈베리파이] IoT 딥러닝 Computer Vision 실전 프로젝트
import dropbox 오류
안녕하세요 교수님 제가 pip install dropbox로 설치를 하고 import dopbox를 입력했는데 오류가 나서요ㅜㅜㅜ 어떻게 해결해야 하나요??
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
csv 파일 저장하여 엑셀로 여니까 한글깨짐 현상
안녕하세요. csv 파일로 저장하여, 엑셀로 여니까 한글깨짐 현상이 발생됩니다. 메모장으로 여니까 괜찮던데 그 이유를 알고 싶습니다. 그리고 엑셀로 열었을때 한글깨짐 현상이 안나오게 하고 싶습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
한글 인코딩 관련 질문입니다.
ms.getMessage("hello", null, null)을 넣고 테스트를 돌렸을 때 아래와 같이 뜨면서 테스트가 실패합니다. Expecting: <"??"> to be equal to: <"안녕"> but was not. org.opentest4j.AssertionFailedError: Expecting: <"??"> to be equal to: <"안녕"> but was not. at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at hello.itemservice.message.MessageSourceTest.helloMessage(MessageSourceTest.java:19) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) 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:1541) 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:1541) 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:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) 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 com.sun.proxy.$Proxy2.stop(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:133) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) 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:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) at java.base/java.lang.Thread.run(Thread.java:834) 2021-08-07 10:51:06.397 INFO 12216 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor' MessageSourceTest > helloMessage() FAILED org.opentest4j.AssertionFailedError at MessageSourceTest.java:19 1 test completed, 1 failed > Task :test FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/Users/dpffp/Desktop/STUDY/message/build/reports/tests/test/index.html * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 19s 4 actionable tasks: 1 executed, 3 up-to-date 오류 메세지를 읽어 봤는데 messages.properties 파일에 hello=안녕 이 hello=??으로 바뀌어서 그런 것 같았습니다. 위는 제 messages.properties 파일의 현재 상태입니다. 그래서 인코딩 문제인가보다 하고 인텔리제이 인코딩을 다시 해 주었습니다. 1. Help >> Edit Custom VM Options 클릭해서 파일에 -Dfile.encoding=UTF-8 추가 후 인텔리제이 껐다 켜기 2. Settings >> Editor >> File Encodings >> Global, Project Encoding, Properties Files 설정을 UTF-8로 변경 이후 인텔리제이 껐다 켜기 이 두 가지 방법을 해 보았는데도 여전히 messages.properties파일에 한글이 ?? 으로 깨집니다. 이걸 다시 제가 한글로 수정 후 저장을 하면 다시 ?? 으로 돌아와 버리네요. 어떻게 해결하면 좋을까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
map 내에서 고차함수 질문드립니다.
onRemoveImage를 고차함수로 생성하는 이유가, 원래 1번과 같았던 함수를 2번처럼 바꿨기 때문인가요?? 1. <Button onClick={()=>onRemoveImage(i)}>제거</Button> 2. <Button onClick={onRemoveImage(i)}>제거</Button>
-
미해결홍정모의 따라하며 배우는 C언어
6.17 강의 예제를 따라하던 중 알 수 없는 오류가 생겨 질문 드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의 는 1:1 문의하기를 이용해주세요. 저 혼자 나름대로 코딩 할 때도 size 대신 5를 입력하는 거 말고는 딱히 선생님의 코드랑 다른 것이 없었는데, 저런 오류가 뜨더라구요. 구글링도 해보고 하다가 안 되겠다 싶어서 그냥 선생님 코드랑 똑같이 작성했는데 그래도 저런 오류가 지속되고 있습니다. 이 오류가 왜 뜨는 건지 어떻게 해결할 수 있는 건지 알려주세요 ㅠㅠ.
-
미해결스프링 핵심 원리 - 기본편
특정 타입 모두 조회하기 질문입니다.
@Test@DisplayName("특정 타입을 모두 조회하기")void findAllBeanByType() { Map<String, MemberRepository> beansOfType = ac.getBeansOfType(MemberRepository.class); for (String key : beansOfType.keySet()) { System.out.println("key = " + key + " value = " + beansOfType.get(key)); } " value = " + beansOfType.get(key));가 왜 이렇게 나오는 건지 이해가 안갑니다 value = hello.core.member.MemoryMemberRepository@613a8ee1 beansOfType에서 키값을 얻는 건데 위에 Map<>에서는 키값이String으로 돼있는데 왜 위 처럼 나오죠?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
no-cache부분의 응답에 대해 질문드립니다.
no-cache에서 원서버에 요청시 데이터의 변경이 일어나지 않았을시 false로 304를 내보내는걸로 이해했는데요 원서버와의 네트워크 문제로 연결이 안될시 프록시 서버가 오래된 데이터라도 보여주자라고 해서 응답을 내릴시 똑같이 데이터가 변경이 안되었으니 오래된 데이터 즉 브라우저 내의 캐시를 사용하라고 304를 내보내야되는거 아닌가요? 200을 내보내면 데이터가 수정되었다는 뜻이고 원서버로부터 다시 받아야하는거 아닌가요? 이부분이 이해가 안가서 질문드립니다.