안녕하세요. 스프링 핵심 원리 이해1 - 예제 만들기의 예제 코드관련하여 질문이 있습니다. OrderApp 클래스에서 아래와 같이 2개의 객체를 생성하게 되면, MemberService memberService = new MemberServiceImpl(); OrderService orderService = new OrderServiceImpl(); 한번은 MemberServiceImpl()에 의해서, private final MemberRepository memberRepository = new MemoryMemberRepository();가 수행되면서 MemoryMemberRepository객체가 생성되고, 두번째로 OrderServiceImpl()에 의해서 private final MemberRepository memberRepository = new MemoryMemberRepository();가 또 수행되면서 MemoryMemberRepository객체가 또 생성되는거로 보이는데요. 첫번째 객체의 MAP store 변수가 static으로 되어있기 때문에 메모리 저장소는 공유하는 것으로 보이는데요. 질문1 : 실제로 메모리상 객체는 어떻게 생성되고, store변수는 어떻게 공유되는지 궁금합니다. 질문2 : private final을 쓰는 이유는? 그 의미는? ※ 자바 기본과정도 공부해봤고, 여기저기 물어봐도 잘 아는 분들이 없네요^^
강의중, 연관관계 편의 메서드는 연관관계의 주인으로 설정된 엔티티에서 형성하는 것이 좋다고 하셨는데 Order 엔티티에 // 연관관계 메서드 public void setMember (Member member) { this . member = member ; member.getOrders().add( this ) ; } public void addOrderItem (OrderItem orderItem) { orderItems .add(orderItem) ; orderItem.setOrder( this ) ; } public void setDelivery (Delivery delivery) { this . delivery = delivery ; delivery.setOrder( this ) ; } 이렇게 메서드를 구성했습니다. 그러나 Order - OrderItem 두 엔티티가 갖는 연관관계에서 주인은 OrderItem입니다. 그렇다면 Order에 .addOrderItem()을 없애고 OrderItem 엔티티에 public void setOrder (Order order){ this . order = order ; order.getOrderItems().add( this ) ; } 위와 같은 편의 메소드를 추가하는것이 맞지 않을까 질문합니다!
안녕하세요. 비전공 개발공부 8개월차 주니어입니다. 먼저 정말 유익한 강의 감사드립니다. 제게 큰 도움이 됐습니다. 다름아니고 질문드릴게 있는데요, 퇴근 후 QueryDSL로 토이프로젝트를 하고있습니다. 일별 방문자 수와, 누적 방문자 수 통계를 구하고 있는데요. 우선 제가 작성한 쿼리입니다. SELECT SUM(R.C) FROM (SELECT COUNT(DISTINCT CLIENT_IP) AS C FROM REQUEST_LOG GROUP BY DATE(REG_DATE) ) AS R; 쿼리 의도입니다. 1. 로깅테이블(REQUEST_LOG)에서 일별로 그룹핑하고, 클라이언트 IP로 중복을 제거한 값을 구합니다. (일별 방문자) 2. 일별 방문자를 모두 더합니다. (누적 방문자) 이걸 QueryDSL로 옮기려니 표현식과 alias를 쓰기가 막막한 느낌이 있습니다. 제가 참고한 문서와 작성한 코드입니다. http://www.querydsl.com/static/querydsl/3.6.3/reference/ko-KR/html_single/#alias @Override @Transactional(readOnly = true) public Long allVisitors() { JPAQueryFactory queryFactory = new JPAQueryFactory(getEntityManager()); return queryFactory .select(requestLog.clientIp.countDistinct()) .from(requestLog) .groupBy(functionDate(requestLog.regDate)) .fetch() .stream() .reduce(0L, Long::sum); } private StringTemplate functionDate(DateTimePath regDate) { return stringTemplate("date({0})", regDate); } 결국 alias를 어떻게 쓸지 잘 알지 못해 우선 서브쿼리를 포기하고 단순 select 문으로 일별 방문자수를 구해온 후 어플리케이션에서 stream으로 일별 방문자수를 모두 더해 누적 방문자수를 구해서 구현했습니다. 근데 그냥 자바코드없이 QueryDSL만을 이용해서 쿼리한방에 끝내고 싶지만 방법을 잘 알지 못해 어떻게 해결해야 할지 계속 고민중입니다. 혹시 실례가 안된다면 간단한 예제코드나 힌트 좀 주실 수 있으실까요? 😥 전체적인 소스코드 주소입니다. https://github.com/shirohoo/Application-SubscribeTechBlogs
자주 질문드려서 죄송합니다!! 타입스크립트를 활용하는 부분이 여기서 처음 나오는 것 같은데요. 제가 타입스크립트를 배웠을 때에는 추론이 되더라도 장점을 살리기 위해 왠만하면 다 붙여주는 것으로 알고 있습니다. 하지만 현재 프로젝트에서는 추론되어지는건 생략하고 추론되어지지 않는 부분만 타입스크립트를 사용하시는 것 같아서요. 혹시 이게 더 좋은 방법이고 현업에서도 이렇게 이루어지는지 궁금합니다! 마지막으로 한가지 더 질문드립니다. onChange같은 경우는React.ChangeEvent<HTMLInputElement> 을 활용하면 any를 사용하지 않고 오류를 발생하지 않는것으로 알고 있습니다. 밑에 코드처럼 이렇게 작성하면 되는지 궁금합니다! import { Dispatch, SetStateAction, useCallback, useState } from 'react'; const useInput = <T = any>( initialData: T, ): [T, (e: React.ChangeEvent<HTMLInputElement>) => void, Dispatch<SetStateAction<T>>] => { const [value, setValue] = useState(initialData); const handler = useCallback((e) => { setValue(e.target.value); }, []); return [value, handler, setValue]; }; export default useInput;
안녕하세요. index.html에 아래와 같이 바벨을 사용하도록 수정한 이후부터 크롬 개발자 도구에서 js/main.js가 보이지가 않습니다. <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.24.0/babel.js"></script> <script type="text/babel" src="js/main.js"></script> 아래는 강의 자료 파일을 그대로 GoLive로 띄웠을 때 화면입니다. 혹시 다른 설정을 확인해 봐야 할까요.
단방향과 양방향의 차이점이 무엇인지 조금만 더 알려주실 수 있으실까요 ? 또한 Orange가 값이 아닌 아이템의 이름이라는게 문자열과 enum안에서 선언된 Orange의 key값으로 === 비교를 해서 false가 출력이 되는게 맞는거죠 ? 보통 const enum을 사용하는 경우가 많을까요 아니면 그냥 enum으로 정의를 많이 하나요?
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
좋은 강의 잘듣고있습니다! 다름이 아니라 이해가 안가는 부분이 있어서 질문 드립니다. 분기문 강의 25분쯤입니다. input이 ROCK인 상황에서 switch case를 사진과 같이 작성했을 시, 첫 case ROCK문에 break를 걸지 않았다 해도, 그다음 실행되는 코드는 case PAPER: 이라고 생각해서, 어짜피 "보를 냈습니다" 가 출력이 되지 않을 것 같은데, 왜 출력이 되는지 궁금합니다
선생님~ 유튜브 강의 통해서 반응형 모달 강의를 듣다가 질문 드립니다! .modal_content에 opacity : 0; 주시고 active시에 opacity:1;을 주셨는데, active되기 전 상태에서 마우스를 브라우저 쪽에 움직이다보면 input이나 p태그 쪽 위치에 마우스 포인터의 모양이 바뀌는 것을 발견해서요~ 이런 경우에는 display : none을 추가하고 active시에는 display: block을 추가해도 될까요~?
import java.util.*; import java.io.*; class Main { public String solution(String str) { String answer = ""; str += ""; int[] arr = new int[26]; for(int i=0; i<str.length(); i++) { // ASCII코드와 배열을 사용해 배열에 해당 문자의 연속된 값을 넣어줌 arr[str.charAt(i)-65]++; } for(int i=0; i<str.length()-1; i++) { if(str.charAt(i) == str.charAt(i+1)) { continue; } else if(arr[str.charAt(i)-65] == 1) { // 문자가 연속되지 않을 때 answer += str.charAt(i); } else if(str.charAt(i+1) == '') { // 이 부분에서 else without if 오류가 남... answer += str.charAt(i); break; } else { answer += str.charAt(i) + String.valueOf(arr[str.charAt(i)-65]); } } return answer; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); Main C = new Main(); System.out.println(C.solution(str)); } } 강의를 듣기전 제가 풀어본 방법입니다. 배열에 연속된 횟수를 넣어서 구현하는 로직으로 짜봤는데, 마지막문자를 출력하는 부분에서 해결이 되지 않습니다. 이런 로직으로 짤 때 어떻게 해야 문제를 해결 할 수 있을까요? 아니면 저의 접근방법 자체가 잘못된것인지 궁금합니다.
안녕하세요 강사님! MemberService memberService = ac.getBean(MemberService.class); 에서 다음과 같은 오류가 발생합니다. org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.member.service.MemberService' available 그래서 @Component와 @Autowired 를 잘못 넣었나 해서 찾아봤는데요. 다음과 같이 작성하였고, 어떻게 해결해야 할지 조언 부탁드려도 될까요?
강의 영상 중 auth.js에는 module을 임포트한 적이 없는 것 같은데 req.cookies.x_auth에 어떻게 접근할 수 있는 것인지 궁금합니다! index.js에 const = { auth } = require("./middleware/auth"); 로 임포트 한 적이 있지만 이건 index.js 안에서 auth를 사용하겠다는 뜻인 것 같고 auth.js와 index.js에서의 연결점을 찾기가 힘듭니다! 이와 관련해서 질문 남겨 봅니다!
리엑트 네이티브와 모든 설치하는 것들은 강의의 요구에 맞춰서 설치하고, 설정을 했습니다. 그런데 navigation모듈만 리엑트 프로잭트에 설치를 하면, navigation이 설치된 어떤 프로잭트든 다 똑같은 오류가 발생하며 실행이 안됩니다. 구글링해봐도 잘 모르겠습니다, 도움 부탁드리겠습니다. (navigation 모듈이 설치 안된 다른 리엑트 네이티브 프로잭트는 안드로이드 에뮬레이터에서 앱 실행이 잘됩니다)
안녕하세요. 불량 데이터가 그렇게 많지 않을 때 오토인코더를 사용하면 x, y는 각각 자기 자신이 들어가게 됩니다 입력과 정답이 같게 되는 거죠 근데 불량 데이터가 어느정도 있다면 이미지 배치를 (x, y)=(불량, 정상)로 해서 입력해도 되나요? 아니면 그냥 정상만 훈련하는 것이 좋을까요? 클래스는 정상/비정상 2개뿐입니다
안녕하세요. 제로초님 혹시 router에서 include한 model은 limit 설정은 힘든가요? const user = await User.findOne({ where: { id: req.user.id } }); const fullUser = await User.findOne({ where: { id: user.id }, attributes: { exclude: ['password'], }, include: [{ model: Image, }], order: [ ['createdAt', 'DESC'], [Image, 'createdAt', 'DESC'] ], }); res.status(200).json(fullUser); 추가 기능 넣으려고 합니다. 유저 프로필 이미지를 구현하는 라우터인데요. 구현은 되는데 섬네일 등록 시 그 유저의 해당 섬네일이 모두 응답으로 넘어오더라구요. (전에 등록했었던 섬네일 이미지 포함) 그래서 제일 하단에 order로 최근 등록된 섬네일을 배열 0번째로받아서 프론트에서 섬네일 이미지 수정되어보이게 했습니다. 저럴 필요없이 최근 등록된 섬네일 이미지만 limit 1을 하면 좋을 것 같은데 구글링해서 order 방법은 찾았는데 limit은 자료가 안보여서 여쭤봅니다!