묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
두개 모두 같다고 생각했는데, 왜 직접 persist한 것만 H2에 반영되나요? ㅠㅠ
테스트 코드에서 Member와 Member1을 반영했다고 생각했는데 왜 Member만 DB에 반영되는지 모르겠습니다. ㅠㅠ @SpringBootTestclass OrderServiceImplTest { @Autowired EntityManager em; ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberService = ac.getBean(MemberService.class); @Test @Transactional @Rollback(false) public void testSaveMember(){ Member member = new Member(); member.setUsername("kin11"); member.setAddress(new Address("1","2","3")); em.persist(member); Member member1 = new Member(); member1.setUsername("kin"); member1.setAddress(new Address("1","2","3")); memberService.join(member1); }} package com.example.spring.repository;import com.example.spring.domain.Member;import java.util.List;public interface MemberRepository { Long save(Member member); Member findOne(Long id); List<Member> findAll(); List<Member> findByName(String username);} - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! package com.example.spring.repository;import com.example.spring.domain.Member;import lombok.RequiredArgsConstructor;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import java.util.List;@Repositorypublic class MemberRepositoryImpl implements MemberRepository { @PersistenceContext EntityManager em; @Override public Long save(Member member) { em.persist(member); return member.getId(); } @Override public Member findOne(Long id) { return em.find(Member.class, id); } @Override public List<Member> findAll() { return em.createQuery("select m from Member m",Member.class).getResultList(); } @Override public List<Member> findByName(String username) { return em.createQuery("select m from Member m where m.username =:name",Member.class) .setParameter("name",username ) .getResultList(); }} - 먼저 유사한 질문이 있었는지 검색해보세요. package com.example.spring.service;import com.example.spring.domain.Member;import java.util.List;public interface MemberService { Long join(Member member); List findMembers(); Member findOne(Long Id);} package com.example.spring.service;import com.example.spring.domain.Member;import com.example.spring.repository.MemberRepository;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import java.util.List;@Service@Transactionalpublic class MemberServiceImpl implements MemberService { private final MemberRepository memberRepository; @Autowired public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } //회원 등록 @Override public Long join(Member member) { validateDuplicateMember(member); memberRepository.save(member); return member.getId(); } private void validateDuplicateMember(Member member) { List<Member> findMembers = memberRepository.findByName(member.getUsername()); if (!findMembers.isEmpty()){ throw new IllegalStateException("이미 존재하는 회원입니다."); } } //회원 전체 조회 @Override @Transactional(readOnly = true) public List findMembers() { return memberRepository.findAll(); } //회원 한명 조회 @Override @Transactional(readOnly = true) public Member findOne(Long Id){ return memberRepository.findOne(Id); }} package com.example.spring;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ComponentScanpublic class AppConfig {}
-
미해결처음 배우는 리액트 네이티브
mac 용인가요.
궁금한게.. 초반부 지금 ios 부분 강의 듣고있는데 mac용으로만 설명 하시네요.. 윈도우용으로는 아예설명이 없으신가요.. 제가 윈도우10 노트북으로 강의들으면서 따라하고있는데.... 앞으로 듣게될 강의도 다 mac버전으로만 설명해주시는건가요.. 8프로를 들어서 환불도안되는데..
-
해결됨스프링 시큐리티
RequestCache 가 있는 상태에서 뒤로가기 문제
안녕하세요, 강의 너무너무 재밌게 듣고 있는 수강자입니다 :) 오늘 인증 성공 핸들러 강의 듣다가 몇가지 테스트를 해봤는데, 정말 난감한 상황을 마주쳤습니다. 어떤 사용자가 아래처럼 행동한다고 가정하겠습니다. 1. 메인페이지( = "/" ) -> 마이페이지 메뉴 클릭 2. 로그인 화면 뜸 (이때 세션에 RequestCache 가 생성) 3. 뒤로가기 4. 화면 상단의 로그인 버튼 클릭 5. 로그인 화면 뜸 (여전히 세션이 2번의 RequestCache 를 간직함) 6. 로그인을 성공 7. 마이페이지로 이동 이럴 때는 어떻게 해야할지 정말 난감하네요. 그냥 로그인 버튼을 클릭해서 로그인에 성공했으니, 로그인 성공 디폴트 경로인 "/" 로 보내고 싶습니다. 어떻게 하는게 좋을까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
solution 메서드의 매개변수 n이 있는 이유가 무엇인가요?
구현부 내용에 n의 값을 쓰는 문장이 없는데 매개변수 n의 값이 있는 이유가 궁금합니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
nginx 질문
aws 주소로 접속하면 원래 홈페이지가 잘 나왔는데 갑자기 어느순간 코드를 잘못 건들인건지 아래와 같은 사진이 계속 나옵니다. 원인이 뭘까요..?
-
미해결실전 데이터 사이언스 Part2. 데이터 전처리
In[42] 14:50 코드 질문
안녕하세요 선생님. 질문이 너무 많아 죄송스럽네요..! 매번 질문에 답을 쉽게 이해할수있게 달아주셔서 감사합니다. 이번엔 좀 코드적인 부분에서 궁금했는데 # 가중치의 컬럼 이름을 확인하고 큰 값 순으로 정렬하여 보겠다 result = pd.DataFrame({'feature':X.columns,'weight':model.coef_[0].round(3)}) result.sort_values('weight', ascending=False, inplace=True) result 여기서 42번 cell에서 코드가 조금 이해가 안됩니다. feature이란 column은 X라는 우리 data에서 column을 가져온거 같고 weight은 어떤원리로 가져왔는지 모르겠습니다. model.coef[0]이라는게 41번째 cell에서 저희가 array로 본거중 0번째만갖고온다는게 무슨뜻인지 잘 모르겠습니다. array의 shape이 (1,12)인걸 알아냈고 여기에서 알아서 feature이랑 weight값 12개랑 자동적으로 매칭이 되나요? (즉, 순서가 다 있다는건가요?) 조금 질문이 난해한거 같네요.. 죄송합니다. 그리고 inplace=True는 뭐하는 함수인가요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
깂이 다르게 나오는 경우
분명히 같은 2차원 배열인것 같은데 왜 값이 다르게 나오는 것인가요?? <html> <head> <meta charset="UTF-8"> <title>출력결과</title> </head> <body> <script> function solution(n, r) { let answer; let dy2 = Array.from(Array(n + 1), () => Array(n + 1).fill(0)); let dy = Array(n + 1).fill(Array(n + 1).fill(0)); console.log(dy); console.log(dy2); function DFS(n, r) { if(dy[n][r] > 0) return dy[n][r]; if(n === r || r ===0) return 1; else return dy[n][r] = DFS(n - 1, r - 1) + DFS(n - 1, r); } answer = DFS(n, r); return answer; } console.log(solution(5, 3)); </script> </body> </html>
-
미해결왕초보를 위한 Adobe Photoshop CC 2019 입문자 가이드
PSD(3)강에서 cosmos가 마스크에 같이 잘려 나와요
원래면 꽃부분을 마스크를 땄으니까 글자가 뒤로 오면 되는데, cosmos글자가 마스크 안에 포함되어있는 것처럼 그 부분만 잘려서 같이 나와버려요ㅜㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
자바 연결 에러 질문 드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 애플리케이션이 잘 실행되다가 갑자기 아래와 같은 에러메시지가 뜨면서 실행이 되지 않습니다..원인을 모르겠습니다... Caused by: java.net.ConnectException: Connection refused (Connection refused)
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
질문있습니다.
작성한 AuthenticationFilter라는 커스텀필터를 만들어서 addFilter에 넣는 것 같은데 아래 파란색으로된 부분이 이해가 가지 않습니다.. 매니저가 무엇인지.. MSA부분은 아니지만.. 시큐리티에 대해서 잘몰라서 시큐리티 부분 질문드립니다. ㅠ
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
섹션2의 9/14 질문입니다.
섹션 2의 9강을 듣던 중, subplots=True를 해서 KONEX, KOSDAQ, KOSPI가 구분되어 그래프가 그려지는 것을 확인했는데, KONEX와 KOSDAQ은 왼편 상단에 적히는데, 마지막 KOSPI는 오른쪽 상단에 표시가 됩니다. 이 KOSPI 글자도 왼편 상단으로 옮길 수는 없을까요? 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
application.propertie에서 질문있습니다
jsp에 접속은 되나 선생님 화면과 다르게 회색처리 되는데 정상인가요?
-
미해결스프링 핵심 원리 - 기본편
강사님 강의 듣는중에 오류가 발생합니다..
나머지는 오류가 뜨지 않는데 구글링을 해도 어떻게 해결하는지 잘 모르겠습니다.. 어디가 의심되는지 알려주실수 있나요..? java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132) 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:244) at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:138) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$6(ClassBasedTestDescriptor.java:350) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable(ClassBasedTestDescriptor.java:355) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$7(ClassBasedTestDescriptor.java:350) 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:349) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$instantiateAndPostProcessTestInstance$4(ClassBasedTestDescriptor.java:270) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:269) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$2(ClassBasedTestDescriptor.java:259) at java.base/java.util.Optional.orElseGet(Optional.java:369) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$3(ClassBasedTestDescriptor.java:258) at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:31) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$0(TestMethodTestDescriptor.java:101) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:100) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:65) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$1(NodeTestTask.java:111) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.prepare(NodeTestTask.java:111) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:79) 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 com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) Caused by: org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name 'memoryMemberRepository' defined in class path resource [hello/core/AutoAppConfig.class]: Cannot register bean definition [Root bean: class [null]; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=autoAppConfig; factoryMethodName=memberRepository; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [hello/core/AutoAppConfig.class]] for bean 'memoryMemberRepository': There is already [Generic bean: class [hello.core.member.MemoryMemberRepository]; scope=singleton; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [C:\study\core\out\production\classes\hello\core\member\MemoryMemberRepository.class]] bound. at org.springframework.beans.factory.support.DefaultListableBeanFactory.registerBeanDefinition(DefaultListableBeanFactory.java:995) at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod(ConfigurationClassBeanDefinitionReader.java:295) at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:153) at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:129) at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:343) at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247) at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311) at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) at org.springframework.boot.SpringApplication.run(SpringApplication.java:338) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:123) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124) ... 68 more
-
미해결
어제 20% 할인 쿠폰으로 강의를 구매했는데, 한 가지를 빠뜨리고 결제했습니다.
13일까지 기한인 20% 할인 쿠폰으로 교안강의를 포함하여 강의 3개를 구매했는데, 뒤늦게 UX 강의가 누락된 것을 확인하였습니다. 좋은 강의임에도 불구하고 할인된 가격으로 구매할 수 있는 기회를 놓친 것이 아까운데 혹시 쿠폰 발급이 가능한가요? 쿠폰 사용에 제한 기간(당일내 사용, 3일내 사용 등)이 있어도 상관없습니다.
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
git 권한 요청 드립니다.
인프런 아이디 : . 인프런 이메일 : . 깃헙 아이디 : . 깃헙 Username : . 요청드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
void 회원가입( ) { } 실행 에러
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-200] . . . Caused by: org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-200] . . 어제 까지 H2실행하면서 데이터 입력하고 잘 따라하고 있었는데 오늘 학습하면서 void( ) 회원가입 테스트 했는데 위와 같은 에러코드가 출력되고 있어요 원인을 찾다가 한계에 부딪혀 질문 올리게 되었습니다. MemberServiceIntegrationTest.java package hello.hellospring.service;import hello.hellospring.domain.Member;import hello.hellospring.repository.MemberRepository;import hello.hellospring.repository.MemoryMemberRepository;import org.junit.jupiter.api.AfterEach;import org.junit.jupiter.api.BeforeEach;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.transaction.annotation.Transactional;import static org.assertj.core.api.Assertions.assertThat;import static org.junit.jupiter.api.Assertions.assertThrows;@SpringBootTest@Transactionalclass MemberServiceIntegrationTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test void 회원가입() { //given Member member = new Member(); member.setName("hello"); //when Long saveId = memberService.join(member); //then Member findMember = memberService.findOne(saveId).get(); assertThat(member.getName()).isEqualTo(findMember.getName()); } @Test public void 중복_회원_예외() { //given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); //when memberService.join(member1); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2)); assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); }} build.gradle plugins { id 'org.springframework.boot' version '2.5.2' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java'}group = 'hello'version = '0.0.1-SNAPSHOT'sourceCompatibility = '11'repositories { //mavenCentral라는 곳에서 Library를 다운로드 한다. mavenCentral()}dependencies { //템플릿 엔진 - HTML 생성해주는 라이브러리 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' //JUnit Library testImplementation 'org.springframework.boot:spring-boot-starter-test'}test { useJUnitPlatform()} application.properties spring.datasource.url=jdbc:h2:tcp://localhost/~/testspring.datasource.driver-class-name=org.h2.Driver
-
미해결파이썬 무료 강의 (활용편2) - GUI 프로그래밍 (4시간)
photoimage오류
이렇게 입력했는데도 오류가 계속 뜹니다ㅠㅠ tkinter.TclError: couldn't recognize data in image file "gui_basic/img.png" 이렇게 뜨네요..어떻게 해결 할 수 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part8: Entity Framework Core
EntityState.Unchanged로 처리 후 데이터베이스 조회시 다른 필드값이 null인 경우에 대한 질문
안녕하세요? Rookiss님. 몬스터가 드랍하는 아이템중에 stackable 아이템이 있어서 DB 조회없이 바로 갯수를 업데이트하고자 하여 아래와 같이 코드를 작성했습니다. 그 후에 다시 인벤토리 아이템을 클라에 통보하기 위하여 조회를 했으나 Stackable Item의 다른 Property가 모두 NULL이 되어 버리네요. 그래서 결국 아이템을 조회한 후에 갯수를 추가하니 정상적으로 처리가 되네요. 질문1 : 이런 경우 entityState를 사용하지 못하고 꼭 데이터베이스에 조회를 해야할 까요? 질문2 : stackable Item의 경우라면 어떤 로직으로 처리를 하는 게 바람직할 지 조언을 부탁드리고자 합니다. ------------------------------------------------------------------------------------ 구글링을 통해 stackoverflow에서 찾아본 결과는 아래와 같습니다. stackoverflow의 답변 https://stackoverflow.com/questions/28479933/after-setting-entitystate-unchanged-the-entity-properties-are-lost => 채택된 답변은 아이템의 갯수를 업데이트하기 전에 먼저 조회를 하라고 합니다. ------------------------------------------------------------------------------------ 제가 작성중인 Dbtransaction 클래스의 메서드입니다. ------------------------------------------------------------------------------------ public static void RewardStackableItem(Player player, GameRoom room, int itemDbId, int totalCount) { if (player == null || room == null || itemDbId == 0) return; ItemDb oldItemDb = new ItemDb() { ItemDbId = itemDbId, Count = totalCount }; // YOU Instance.Push(() => { S_UpdateItem updateItemPacket = new S_UpdateItem(); using (AppDbContext db = new AppDbContext()) { // 방법1. EntityState 로 처리 //db.Entry(oldItemDb).State = EntityState.Unchanged; //db.Entry(oldItemDb).Property(nameof(ItemDb.Count)).IsModified = true; // 방법2 : 데이터베이스에 조회를 한 후에 처리 ItemDb item = db.Items .Single(i => i.OwnerDbId == player.PlayerDbId && i.ItemDbId == itemDbId); item.Count = totalCount; bool success = db.SaveChangesEx(); if (success) { //문제가 발생하는 부분으로 인벤토리의 해당 아이템을 수정하지 않고 그냥 조회 후 인벤토리를 clear한 후에 다시 인벤토리의 아이템을 만들어서 클라에 통보하고자 하였습니다. List<ItemDb> items = db.Items .Where(i => i.OwnerDbId == player.PlayerDbId).ToList(); player.Inven.Items.Clear(); // Me room.Push(() => { foreach (ItemDb itemDb in items) { Item item = Item.MakeItem(itemDb); if (item != null) { player.Inven.Add(item); ItemInfo info = new ItemInfo(); info.MergeFrom(item.Info); updateItemPacket.Items.Add(info); } } player.Session.Send(updateItemPacket); }); } } }); }
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
thymeleaf관련
thymeleaf를 사용하다 의문점이 들어 질문을 남깁니다. 이 템플릿을 배우는 이유는 restapi상황에서 front와 back이 나눠져있는 상황에 지금 당장 front와 연결할 수 없을 때, 먼저 가상 시나리오를 실행시켜보기 위해서 알아야하는 템플릿을 익히는 것인가요 ??
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
벡터 동적할당에 대해서
안녕하세요 여쭈어볼 게 있습니다! 이동하거나 회전할 때 Vector 를 사용하지 않습니까? 그런데 업데이트 함수에서 매초 마다 new 로 동적할당하는 것은 Heap에 그만큼 엄청난 과부하를 준다고 생각이 듭니다. c#은 수동적으로 메모리 관리를 할 수 없으니 사용자가 강제로 삭제를 할 경우 오히려 성능에 악영향을 준다고 알고 있습니다. 그래서 그냥 가비지 컬렉터가 삭제를 알아서 하게 내버려 둬야 한다고 그러더군요. 그래서 굳이 왜 매번 new로 저렇게 해줘도 성능에 아무런 지장이 없을까? 저 방법 말고 임의 고정 값을 스택에 할당하고 그걸 활용하는 것이 성능 향상에 엄청 낫지 않을까? 이렇게 생각이 들기도 합니다. 궁금증을 꼭 풀고 싶습니다 감사합니다!