class Parents { // 좁은 파라미터 method(name: string, test: string) { // 넓은 반환 타입 return { key: "" }; } } class Child extends Parents { // 넓은 파라미터 override method(name: string) { // 좁은 반환 타입 return { key: "", name: "" }; } } 안녕하세요, 리스코프 치환원칙을 보니 반,공변성의 원칙과 같이 매개변수는 반공변성을 리턴은 공변성을 가지는 것 같은데, T<child> -> T<parents> 개념이 되는 타입의 정의 원칙을 리스코프 치환 원칙이라 하는 것일까요?
안녕하세요. Test code에서 Spring Boot 실행을 최소화 하기 위해 IntegrationTestSupport 추상클래스를 상속하여 구현하고 있었습니다. 하지만 IntegrationTestSupport를 상속하더라도 상속한 클래스에서 @MockBean, @SpyBean을 사용하게 될 경우 IntegrationTestSupport를 상속하더라도 해당 클래스에서 Spring Boot 실행이 되는 걸 확인했습니다. Spring Boot 내부적으로 같은 다른 Bean Context를 가지고 있기 때문에 Spring Boot를 실행하는 것 같은데, IntegrationTestSupport를 상속한 클래스에서 @MockBean을 사용하게 될 경우엔 어떻게 해야 Spring Boot 실행을 최소화 할 수 있을까요? 해당 질문 답변해주시면 감사하겠습니다. 강의 정말 잘 듣고 있습니다.
npm install 설치한 뒤 개발 서버 키기 위해서 npm run dev 입력했는데 이런 에러가 뜹니다. 인터넷 찾아 본 결과 npm install watchman 이거 해줘야 에러 안 나는 거 알고 있지만, 번번이 프로젝트 생성할 때마다 이런 에러가 꼭 뜹니다. 혹시 해결 방법이 있을까요?
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요! 먼저 유사한 질문이 있었는지 검색해 보세요. 서로 예의를 지키며 존중하는 문화를 만들어가요. @Transactional public ShelterResponse.FindShelterListDTO findActiveShelterList() { List<Shelter> shelters = shelterRepository.findAllWithAnimalAndLatitude(); List<ShelterResponse.ShelterDTO> shelterDTOS = shelters.stream() .map(shelter -> new ShelterResponse.ShelterDTO( shelter.getId(), shelter.getName(), shelter.getLatitude(), shelter.getLongitude(), shelter.getCareAddr(), shelter.getCareTel())) .collect(Collectors.toList()); return new ShelterResponse.FindShelterListDTO(shelterDTOS); } @Transactional(readOnly = true) public ShelterResponse.FindShelterInfoByIdDTO findShelterInfoById(Long shelterId) { Shelter shelter = shelterRepository.findById(shelterId).orElseThrow( () -> new CustomException(ExceptionCode.SHELTER_NOT_FOUND) ); return new ShelterResponse.FindShelterInfoByIdDTO( shelter.getId(), shelter.getName(), shelter.getLatitude(), shelter.getLongitude(), shelter.getCareAddr(), shelter.getCareTel(), shelter.getAnimalCnt() ); } 위 코드는 유기 동물 보호소 서비스에서 보호소 목록을 가져오고, 보호소의 상세 정보를 가져오는 코드입니다. 서비스 레이어에서 컨트룰러 레이어로 응답을 내보낼 때 DTO로 변환해서 보내는데, 데이터양이 많은 엔티티의 경우 위 코드처럼 DTO 빌드 코드가 길어지더라구요.. 그래서, 정보량이 많은 엔티티에 관한 데이터를 DTO로 리턴할 때는 아래와 같이 서비스 레이어에 private 메서드로 추출해서 사용합니다. private ShelterResponse.AnimalDTO createAnimalDTO(Animal animal, List<Long> userLikedAnimalIds) { return new ShelterResponse.AnimalDTO( animal.getId(), animal.getName(), animal.getAge(), animal.getGender(), animal.getSpecialMark(), animal.getKind(), animal.getWeight(), animal.getNeuter(), animal.getProcessState(), animal.getRegion(), animal.getInquiryNum(), getCachedLikeNum(animal.getId()), userLikedAnimalIds.contains(animal.getId()), animal.getProfileURL()); } 여기서 고민이 시작 됐는데, 응답으로 보낼 DTO를 빌드하는 로직을 서비스 레이어에 private 메서드로 추출하는 게 서비스 레이어의 역할 상 괜찮을지 의문이 들더라구요. 현업에서는 정보량이 많은 DTO 코드를 빌드하는 부분을 메서드로 따로 추출하는지, 추출한다면 어떻게 처리하는지 궁금합니다! 이거를 메서드로 추출하지 않을까도 생각해봤는데, 그러면 메서드의 코드 길이가 너무 길어져서 가독성을 해치는 느낌도 있더라구요.. 또 DTO만 처리하는 클래스를 만들어볼까도 생각했는데 이게 맞나 싶기도 하구요
안녕하세요....강의를 한번 다 듣고 다시 복습을 해보려고 하는데 처음부터 막혀버리네요ㅠㅠ node 를 설치했고, 작업폴더를 만든후 VS CODE 에서 오픈폴더를 했습니다. 터미널창에서 npm init 을 실행해서 엔터를 쳐서 완료했구요, 간단하게 문장넣고 확인하는 부분에서부터 나오지를 않아서요 ㅠㅠ 아래 질문을 검색해보니 비슷한 질문이 있어서 찾아봤는데요, 작업폴더명이 혹시나 한글이면 안되나 싶어서 영문으로도 해봤는데 똑같이 안되구요 윈도우계정 이름도 한글이 아니고 영문입니다. 혹시 외장하드에서 하면 안되는걸까요? 외장하드에서 한글폴더면이 혹시 안되는건지요.... 예를들어 외장하드>리액트>1-node 이런식이어서 안되는걸까요?
안녕하세요, 강의 애청자(?) 입니다. React Server Component가 도입된 후에 interaction이 필요한 component(Client component)만 JS Bundle에 포함시켜서 Browser로 보냄으로써 JS Bundle의 불필요한 계산(용량)을 줄일 수 있다고 말씀하셨습니다. 그렇다면 여기서 궁금한것이 React Server Component를 설명해주시기 전에 Pre Fetching에서 JS Bundle에는 사실 현재 Page에 필요한 JS Bundle만 전달된다. 이유는 용량이 커지면 hydration이 지연되기 때문. 그 후에 Pre fetching으로 나머지 연결된 모든 Page의 JS Bundle을 불러온다고 설명해주신 개념은 여전히 유지가 되는건가요? 즉, 아래의 순서가 맞는지 궁금합니다. (Brower) 접속요청 (Server) JS 실행-Rendering (Server to Browser) Rendering 된 HTML (Browser to User) 화면에 Rendering (Server to Browser) JS Bundle ( 단, '현재 Page에 필요한', 'Client component') (Browser) Hydration (Browser to User) Interaction 가능 - TTI (Server to Browser) Pre Fetching/JS Bundle (단, '연결된 모든 Page의', 'Client component') 이 순서가 맞을까요? 아니라면.. Pre fetching 개념이 React Server Component 도입이후 없어진건가요?(이건 아닌거같긴한데 ㅎ) 어떻게 동작하는지 궁금합니다. 항상 잘 듣고있습니다. 감사합니다.
RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors .', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}} 청크 사이즈도 많이 줄여서 하는데, 똑같은 에러가 나서 질문드립니다! 강의 영상이랑 똑같이 진행하고 있는데 결제크레딧 카드가 12월5일부로 open-ai에서 결제가 안되서 급하게 부랴부랴 크레딧을 가지고 있는분께 크레딧이 얼마 없긴한 계정 빌려서 해보고 있는데도 rateLimiterror가 나오고 있습니다. 위와같은 에러가 다른경우도 나는 경우가 있을까요?
안녕하세요. 앞서 전파기본 강의와 전파예제 강의를 듣고나서 이해가 되지않는 부분이 몇가지 있어서 질문드립니다. 1. 강의 자료중에, 트랜잭션매니저에 커밋하는것이 논리적인 커밋이라면, 실제커넥션에 커밋하는것을 물리 커밋이라고 할수있다 = 내부트랜잭션인 txManager.commit(inner)을 하는것이 논리적인 커밋이고, 외부트랜잭션인 txManager.commit(outer)을 하는것이 물리커밋이다. = 트랜잭션 매니저를 통해 txManager.commit(inner)를 하는것이 논리적인 커밋이고, 트랜잭션 매니저를 통해 txManager.commit(outer)를 하는것이 물리커밋이다. 이렇게 생각하는게 맞을까요?? 2. 1번 질문에 더해서, 트랜잭션 매니저를 통해서 txManager.commit()을 하는것이 논리적인 커밋이라면, 물리적인 커밋은 코드상 어떤것인가요? 외부트랜잭션도 txManager.commit()을 통해 커밋하는거같은데, 이렇게 외부트랜잭션을 커밋하는것이 논리적인 커밋임과 동시에 물리커밋인것인가요?? 3. 외부트랜잭션도 논리트랜잭션이고 내부트랜잭션도 논리트랜잭션인가요? 그래서 이 두가지를 묶어서 물리트랜잭션이라고 하는것인가요?? + 위 질문에 대해서 계속 찾아보면서 생각해봤는데, 이렇게 이해하면 될까요? 1. 내부트랜잭션이 트랜잭션 매니저를 통해서 커밋하는것이 논리적인 커밋이고, 외부트랜잭션이 트랜잭션매니저를 통해서 커밋하는것은 실제 DB커넥션에 커밋하는것이다. 외부트랜잭션의 커밋은 논리적커밋임과 동시에 물리커밋이다. 2. 외부트랜잭션을 커밋하는것은 논리적 커밋임과 동시에 물리커밋이다. 3. 외부트랜잭션과 내부트랜잭션 모두 논리트랜잭션이고, 논리트랜잭션을 묶어서 물리트랜잭션이라고한다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] debug("xx ={} ", str); 에도 내부적으로 toString()이 적용되어서 출력되나요?