비전공자라 많이 서툰지라.. 열심히 배우기 위해서 질문드려봅니다!! ㅠㅠ 이번에 벡터의 성분 합을 직접 표현 해보고 싶어서, 교수님이 알려주신 다양한 방법들을 통하여 아래와 같은 코드를 짰습니다. #include <iostream> #include <cstdarg> using namespace std; class y_vector { private: int m_size; int *vector; public: y_vector(const int& size) : m_size(size) { vector = new int[m_size]; } ~y_vector() { delete[] vector; } y_vector& set_array(int value, ...) { va_list list; va_start(list, value); for (int i = 0; i < m_size; i += 1) { if (i == 0) { vector[i] = value; continue; } else { vector[i] = va_arg(list, int); } } va_end(list); return *this; } void print_array() { for (int i = 0; i < m_size; i += 1) { cout << vector[i] << " "; } cout << endl; } bool is_same_size(const y_vector &v) { return v.m_size == this->m_size ? true : false; } y_vector& operator + (const y_vector& v) { y_vector dum(this->m_size); if (is_same_size(v)) { for (int i = 0; i < this->m_size; i += 1) { dum.vector[i] = this->vector[i] + v.vector[i]; cout << dum.vector[i] << endl; // 함수 내부에서는 잘되는 지 확인하려고 넣어둠 } } else { cout << "Size is not Same" << endl; return *this; } } }; int main() { y_vector yh_1(5); y_vector yh_2(5); y_vector yh_3(6); yh_1.set_array(3, 2, 1, 4, 6); yh_2.set_array(1, 1, 3, 9, 12); yh_3.set_array(2, 8, 3, 4, 7, 5); y_vector yh_4 = yh_1 + yh_2; yh_4.print_array(); return 0; } 위에 보면 체이닝을 위하여 + 산술자를 오버로드 한 함수와 벡터 성분을 결정지어주는 set_array 함수를 y_vector& 타입으로 받아주었습니다. 그러다 보니, + 산술자 함수의 리턴 값으로 어떠한 클래스를 설정해주기 위해 함수 내부적으로 임시적인 클래스의 인스턴스(dum)을 생성해 주었는데, 해당 영역에서 나가게 될 경우 소멸자에 의해 동적 할당 된 vector사라지다 보니, yh_4.print_array();에서 쓰레기 값을 출력하고, 프로그램에서 런타임 에러가 계속 발생하게 됩니다.. 입력 값으로 들어가게 된 인스턴스와 같이 연산이 되는 this에 해당하는 인스턴스의 값을 바꾸지 않고(const로 생각하여) 다른 클래스를 생성하여 반환하는게 가능 할까요..? 동적할당이다보니 불가능할것 같기도 하고, 제가 많이 알지 못하다 보니 할수없는 것을 잡고있는건지, 제가 못하는 건지도 모르겠어서 질문드립니다..
강사님의 정말 좋은 강의를 듣고 JPA와 스프링부트를 잘 사용하고 있습니다!!!! 근데 권한관리 쪽에 한가지 궁금한게 생겨서 죄송스럽지만 이렇게 질문을 하나 작성하게 되었습니다! MemberRole이라는 Enum클래스를 만들고 거기에 USER와 ADMIN이렇게 권한을 회원, 관리자 2개로 하면 권한관리가 쉬운데 예를들면 한 서비스에 여러개의 식당 서비스들이 있고(ex 배달의 민족에서 여러개의 식당들이 있으면) 식당 사장님을 관리자로 두고 자기 식당 서비스를 관리 할 수 있게 만드려면 식당이 계속 추가 될 수 있는데 그때마다 Enum클래스에 USER, ADMIN_1, ADMIN_2... 이런식으로 관리자를 추가해줘야할까요..? 아니면 회원 테이블에 식당 정보를 추가하거나 식당 테이블에 관리자 정보를 추가시켜 ADMIN을 확일할 때 추가적으로 확인을 해줘야 할까요... 이러한 상황일때는 권한 관리를 어떻게 풀어가는지 궁금합니다!!!!!
이번 강의에서는 평범한 도큐먼트만으로는 알 수 없는 정보를 알게 된 것 같아, 감사의 말씀드립니다.! 이 강의에서 몇 가지 JPA와 Java 사용에 대한 질문이 있습니다. 1. 전부 지연로딩으로 바꾸는 것이 좋다고 거듭 강조 주셨는데, 그렇다면 JPA는 왜 default로 EAGER를 사용하는 것인가요? EAGER를 default로 사용한다는 것은, 이렇게 사용하는 경우도 있고 장점도 있다는 것을 의미하는 것 같아 여쭤봅니다.! LAZY를 쓰지 않았을 때의 장점은 어떤 것들이 있나요? 2. Setter를 사용하지 않는 멤버변수에 한해 final을 사용하지 않는 이유는 무엇인가요? 아래 컬렉션 질문과 별개로 setter가 없는 모든 변수에 대해 궁금합니다. 3. 지금까지 필드 초기화는 생성자에서의 초기화와 다른 점이 우선순위만 다르다고 알고 있었습니다. 필드 초기화 -> 생성자 순으로 호출된다고 알고 있고, 단지 스타일 차이라고만 알고 있었습니다. 혹시 필드 초기화가 생성자 초기화보다 안전한 이유가 있을까요? 단순히 여러 생성자가 있을 때에 코드가 빠지는 실수를 막아준다는 이유 밖에 떠오르지 않는데, 다른 이유가 있는지 궁금합니다. 4. 양방향 연관관계 메서드에서 한 쪽만 연관관계 메서드를 적용시키면, 이를 모르고 호출하는 입장에서는 연관관계 메서드가 적용되지 않은 쪽을 호출하여 문제가 될 수도 있을 것 같다는 생각이 듭니다. Delivery <-> Order 관계를 예를 들면, 지금은 Order쪽에만 넣어서 Order에서 setDelivery할 때 자동으로 Delivery쪽도 해주었는데, “연관관계 메서드 해놨겠지”하며 Delivery에서 setOrder를 호출하면 문제가 될 것 같습니다. 물론 의미상 Order에서 Delivery와 OrderItem을 관리하는 것이 맞지만, 이렇게 직관적인 관계만 있지는 않을 것 같아서 그럴 때엔 어떻게 하는지 궁금합니다. 5. Address 부분 설명하실 때, 가볍게 "기본 생성자는 안 썼으면 좋겠지만 private으로 하면 안 되니 protected로 한다."라고 말씀주셨는데, 이러한 부분은 실제로 document를 읽지 않는 이상 알 수 없을 것 같아요. 강의를 듣는 사람 입장에서는 그렇구나 하고 넘길 수 있지만, 처음에 protected를 써야한다는 것은 그냥 단순히 private을 썼을 때 컴파일 오류를 통해 알게 되신건가요? (JPA에서 protected를 써야하는지 어떻게 알았냐가 메인 질문이라기보단, 이렇게 minor하지만 직관을 깨는 것들을 어떻게 보통 알게 되시는지가 궁금합니다.) 이 부분은 개인적으로 백엔드 팀장님으로의 김영한 선생님께 드리는 질문인데, 백엔드 쪽 공부를 하면서 느끼는 부분 중 하나가, 이렇게 tool을 사용하다보면 제 로직을 논리적으로 단단하게 짜는 시간도 있겠지만 그에 못지 않게 tool을 사용하기 위해 알아보는 시간도 적지 않게 쓰일 것 같은 느낌이 듭니다. 이러한 부분은 백엔드 개발이면 당연하게 받아들이는 부분인지 궁금합니다. 정말 길지만, 업무에 차질이 가지 않는 시간에 답변주시면 정말 감사하겠습니다. :)
args 함수 문제를 보고 코드를 짜봤는데 None이 왜 출력되는지 궁금합니다. def wo (*args): for i, v in enumerate(args): print('순서 : ', i, '이름 :', v) print(wo('이우람')) print(wo('이우람', '김민지')) print(wo('이우람', '김민지', '최하나')) 코드를 이렇게 짜봤는데, 실행시키면 실행값 밑에 None이 이런식으로 뜨는데 왜 뜨는지 궁금합니다.
리덕스 구현 이후 로그인이 되지 않는 문제가 있어 문의 드립니다. 데브툴즈를 보니 user정보가 id, password 둘다 공백으로 들어가서 그런지,, 어떻게 해야 할까요? 깃허브 링크 첨부해 드립니다! https://github.com/wkdgus1164/zerocho-next/tree/master/prepare/front
예전에 rds 만들어둔게 있어서 ec2에 설치하지 않고 rds랑 연동하고 있는데요, 웹스톰이나 datagrip에서 접속할 때 분명 ec2 서버 우분투 터미널에서는 잘 되는데 (보안 그룹에서 추가했습니다!) 저희집 ip도 추가했는데도 잘 안되네요ㅠ 원래 저희집 ip로 했을 때 잘 되다가 인바운드 규칙에 ec2 서버 ip를 추가하니 (보안 그룹 id 추가) 서버랑 연동은 잘 되는데 로컬에서 디비를 볼라니 잘 안되더라구요ㅠㅠ
안녕하세요 강사님 !! 좋은 강의 덕분에 스프링을 한 번도 사용해보지 않았지만, 빠르게 잘 적응 중 입니다, !!! 테스트 중에 spring-data-jpa와 spring-data-jdbc 의존성 추가했을 때, 오류가 발생하는 것을 발견하여 질문 드립니다. 현재 상황은 Gradle에 아래와 같인 의존 관계를 설정 하였습니다. 사진에서 보이는 바와 같이 기존에 spring-data-jpa를 먼저 추가하였고, 그 이후 spring-data-jdbc를 추가하였습니다. 하지만 spring-data-jdbc는 빌드에 실패하였고, spring-jdbc는 빌드에 성공하였는걸 확인하였습니다. 실패했을 때의 에러 로그는 아래와 같습니다. 오류 메시지를 확인해보았을 때 XXXRepository를 오버라이드 할 수 없다고 출력이되는데 저의 추측으로는 spring-data-jpa, spring-data-jdbc에서 component scan을 할 때, 순서상 어떤 것이 먼저 등록하는지는 모르겠지만 두 의존성이 동일한 클래스를 Bean으로 등록하려고 할 때 발생하는 에러인 것 같습니다. (현재 등록된 CrudRepository를 상속 받은 interface에는 모두 @Repository 어노테이션을 걸어두었습니다.) 혹시 저의 생각이 맞다면 이 부분은 어떻게 해결할 수 있는지 알 수 있을까요 ??? 만약 아니라면 어떤 부분이 이슈인지 궁금합니다. !!! 마지막으로 spring-jdbc같은 경우는 왜 오류가 발생하지 않았는지 궁금합니다 !!!
여기서 member.getTeam()이 프록시고 getName()을 호출하면서 초기화가 돼고 이때 db를 조회한다고 배웠습니다. 그리고 쿼리가 나간 로그도 배운대로 진행됐습니다. 그런데 위에 코드로 실행해도 쿼리가 나간 로그도 처음 코드랑 동일하게 진행돼는데 아래 코드는 초기화 하는 부분이 없는데 어떻게 이런 결과가 나오는건가요???