User 모델 안에 장바구니가 있잖아요? 상황이, Post 하나를 유저가 장바구니에 담았습니다. 이때, 그 Post가 삭제가되면 유저의 장바구니안에는 해당 Post가 그대로 남아있는데 실제 서비스에서는 문제가 될것같아요., 이런 경우 어떻게 해야할까요? Post가 삭제될시 다른 유저의 장바구니 안에 들어있는 그 Post도 삭제시켜주고싶습니다.
좋은 강의 잘 듣고 있습니다. 다만, 두 번째 프로젝트부터 이전 선수강의를 듣지 않아 접근할 수가 없네요. 타입스크립트를 뷰에 적용하는 플로우를 중점적으로 배우고, 실무에 적용해야 하는 상황이여서 당장은 선수 과목을 들을 시간이 부족한 상황입니다. 두 번째 리포지토리에 접근 권한을 허용해주실 수 있으실까요? Github handle : DolphaGo 감사합니다.
안녕하세요 강사님 강의를 수강하면서 따로 토이 프로젝트를 만들어보고있는데 페이징 부분에 대해서 성능 최적화를 어떻게 해야 좋을지 모르겠어서 죄송하게도 강의 내용은 아니지만 질문드려봅니다 public class Board { ..// @OneToMany(mappedBy = "board", cascade = CascadeType.ALL) private Set<Comment> comments = new LinkedHashSet<>(); @OneToMany(mappedBy = "board", cascade = CascadeType.ALL) private Set<BoardAlbum> boardAlbums = new LinkedHashSet<>(); @ManyToOne(fetch = FetchType.LAZY) private Member member; 제 Board Entity 코드고 수강하면서 조회 성능의 개선을 위해서 ToOne은 Entity Graph로, To Many는 BatchSize 1000을 통한 최적화로 조회 성능을 향상시킬 수 있었는데 페이징의 경우 Desc 를 사용함으로써 속도가 매우 느려짐을 확인했습니다 @Query("SELECT b FROM Board b where b.id<:id order by b.id desc ") @EntityGraph(attributePaths = {"member"}) Slice<Board> findBoards(Pageable pageable, @Param("id") Long id); Board 데이터 백만개 기준으로 위의 로직은 제일 자주 보이는 첫 페이지가 평균 2초 ~ 마지막 페이지 거의 0초의 속도로 데이터를 조회합니다.. 좀 더 개선해보고자 인덱스는 pk가 인덱스기에 pk로 정하고 no offset으로, Querydsl을 사용해 public List<~dto> paginationNoOffset(Long boardId, int size) { return queryFactory .select(Projections.fields(~ dto)) .from(board) .join(board.member,member).fetchJoin() .where( ltBoardId(boardId), ) .orderBy(board.id.desc()) .limit(size) .fetch(); } private BooleanExpression letBoardId(Long boardId) { if (boardId == null) { return null; } return board.id.lt(boardId); } 위와 같이 구성해 테스트해보았으나 오히려 더 느린 4초대가 나오더라구요 강의에 대한 질문은 아니지만 혹시 해답에 대한 언질을 주실 수 있으시다면 감사하겠습니다
강사님 강의중 반응형 웹사이트 포트폴리오(Architecture Agency) 를 예전에 수강해서 제걸로 만들었거든요. 그런데 그것을 모달창으로 띄우려하니 화면은 안뜨고 공백으로 뜹니다. 다른 포트폴리오 작업물은 멀쩡히 작동되는데 패덜라이트에서 이 플러그인 작동을 지원안하는건가요?
안녕하세요 강사님 항상 좋은 강의와 피드백 감사드립니다 다름이 아니라 이번에 강의 중 '회원가입' 테스트를 그대로 따라 코딩하였으나 실행에 오류가 뜹니다. 관련하여 사진과 오류글을 그대로 올려보니 한 번 확인해주시면 감사하겠습니다! 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.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) 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.BeanDefinitionStoreException: Failed to parse configuration class [jpabook.jpashop.JpashopApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'memberRepository' for bean class [jpabook.jpashop.repository.MemberRepository] conflicts with existing, non-compatible bean definition of same name and class [jpabook.jpashop.domain.MemberRepository] at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:189) at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331) 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:771) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:763) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:438) at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) 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) ... 25 more Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'memberRepository' for bean class [jpabook.jpashop.repository.MemberRepository] conflicts with existing, non-compatible bean definition of same name and class [jpabook.jpashop.domain.MemberRepository] at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.checkCandidate(ClassPathBeanDefinitionScanner.java:349) at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:287) at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:132) at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:296) at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:250) at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:207) at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:175) ... 38 more
지금까지 따라오면서 안 되는게 너무 많습니다. 폴더 복붙해서 실행해도 에러납니다.. 예제 소스라도 그대로 실행하면서 보고 싶은데 예제 소스 복붙해서 실행하고 싶어도 그 마저도 잘 안됩니다. . 강의 듣기가 너무 힘듭니다. 임포트 방법 알려주시면 감사하겠습니다. 아래는 그냥 import 해서 넣었을때 상황입니다. 임포트 하면 자바 15라 8로 빌드패스랑 facets 8로 수정해도 동일합니다.
for ( let k = 0 ; k < 4 ; k ++) { //이동하는 4가지경우 const nx = i + dx [ k ]; const ny = j + dy [ k ]; if ( nx >= 0 && ny >= 0 && arr [ i ][ j ] <= arr [ nx ][ ny ]) { //4가지 경우 비교해서 하나라도 안맞으면 flag = 0 ; break ; // break하고 봉우리 아니라는 표시해줌 } } 위코드 if문 안에서요 nx 의 범위가 out of range 하지 않기 위해서 따로 설정을 해준다고 하셨는데 이부분이 제대로 이해가 가지 않습니다 nx = [-1, 0]으로 기존 배열에 없는 부분이 된다고 하더라도 undefined가 되고 if문은 실행되지 않음으로서 그냥 무시하고 오류가 발생하지 않아야 하는게 아닌가 해서요 따로 밑에 경우처럼 코드를 만들어봤는데요 이 같은 경우는 범위를 벗어나더라도 오류가 발생하지 않아요 이유가 뭔가요? let arr = [ 1 , 2 , 3 ]; for ( let i = 4 ; i < 5 ; i ++) { if ( 0 < arr [ i ]) { console . log ( "dd" ); } }
3-4연속부분수열에서 i가 증가할 수록 j루프에서 반복 횟수가 줄어드는 경우에도 o(n2)이 되는 이유가 궁금합니다! 그리고 sum==m 인경우에는 sum-=arr[lt]를 하면 당연히 sum보다 작아지니까 sum+=arr[rt]-arr[lt]를 바로 해주면 한단계가 줄어들지 않나요! sum이 m보다 같을때도 클때랑 마찬가지로 sum-=a[lt]를 해준뒤 다시 sum<m 에 걸려서 sum+=arr[rt]를 하는 이유가 궁금합니다! 코드를 간단하게 해주야해서 그런건가요! 그리고 원소에 m보다 큰 수가 포함되어있는 경우 lt를 증가시키다보면 lt보다 rt가 커지지 않나요..!!?