본문 바로가기

전체 글114

일단은 같은 와이파이 환경에서 진행.. 오늘도 여러 방법으로 시도해보았지만, 어려웠다.. 그냥 같은 맥과 데탑을 같은 와이파이 환경일 때 접속하는 걸로, 우선 만족해야 할 것 같다.. 그래도 한동안은 데탑 사용이 가능해서 그냥 SSH로 접속해서 사용해야 할 것 같다. 2024. 1. 31.
맥북 VPN 접속에 관하여.. 2024-01-30에 약 5시간 가량 맥북 VPN 접속을 위해 별짓을 다해보았다... 시도 이유는 요즘 램 가격이 하락하여 만약 구입하였을 경우, AWS 대신 윈도우에 가상머신을 띄워 Kafka, Docker, WAS, Jenkins 등 다양하게 클러스터도 구축해보고 실습할 수 있어 생각에 신나서 시도했다. 그러나, 이전에는 됐는데 갑자기 업데이트가 원인인지 공유기 VPN 접속이 안된다.. 구글에 있는 모든 내용을 참고하며 공유기 설정도 계속 바꾸어 보았지만, 잘 되지 않았다.. 혹시나 하는 마음으로 윈도우로 접속한 결과, 윈도우는 공유기 VPN 접속이 잘 된다. 이러면 문제는 맥북인데... 윈도우에 openVPN과 같은 소프트웨어를 사용해 직접 VPN 서버를 구축해봐도 되지 않는다.. 그러다가 구글에서.. 2024. 1. 31.
[SpringBoot] JPA Collection 페이징 처리 앞 JPA Collection 페치 조인 최적화 방법은 데이터가 뻥튀기 되기에 페이징 처리에 어려움이 있었다. 하지만, 다른 방법을 사용하면 Collection 페이징 처리가 가능한데 다음과 같은 방법을 따르면 된다. 방법 1. @XToOne(OneToOne, ManyToOne) 관계에 대해선 기존의 페치 조인을 활용한다. (컬렉션은 지연 로딩) @Override public List findAllWithMemberDelivery(Pageable pageable) { QOrder order = QOrder.order; QMember member = QMember.member; QDelivery delivery = QDelivery.delivery; return jpaQueryFactory .select(.. 2024. 1. 29.
[SpringBoot] JPA Collection 페치 조인 최적화 Collection은 @ManyToOne가 아닌 @OneToMany를 사용하는 변수에 사용된다. 하지만, @OneToMany. 즉, 일대다 관계에서 Collection을 조회하면 데이터가 뻥튀기가 된다. 예를 들어, Order(주문), OrderItem(주문된 아이템)이 있다고 했을 때 관계의 주인은 OrderItem이다. 하지만, 관계의 주인(외래키)은 N인 OrderItem이 갖고 있으므로, Order를 기준으로 조인을 진행하면 데이터가 늘어난다. 그렇기에 반환시 중복된 데이터가 나오게 된다. 따라서, 기존의 페치 조인 최적화 쿼리와는 달리 jpql 혹은 querydsl에서 distinct를 추가 해주어야 한다. @Override public List findAllWithItem() { QOrder .. 2024. 1. 29.
[SpringBoot] Repository에서 DTO로 바로 조회 앞 글에서 살펴보았던 페치 조인보다 조금 더 성능적으로 좋은 방법은, Repository에서 DTO로 바로 조회하는 방법이다. 코드 @Query("select new jpabook.jpashop.repository.OrderSimpleQueryDto(o.id, m.name, o.orderDate, o.status, d.address)" + "from Order o" + " join o.member m" + " join o.delivery d") public List findOrderDtos(); 페치 조인 사용시 나가는 쿼리 select o1_0.order_id, d1_0.delivery_id, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.status, m1_0.membe.. 2024. 1. 28.
Docker란? Docker 설명에 앞서 Container는 - 애플리케이션이 동작하기 위해 실행 파일 및 엔진 등을 패키지화하고 격리하는 기술이다. - 따라서, 인프라를 쉽고 빠르게 관리 할 수 있다. 그렇다면 Docker는 무엇인가? - 기존의 리눅스 컨테이너 기술을 활용 - 애플리케이션을 컨테이너로 좀 더 쉽게 활용 가능한 Go언어기반 오픈소스 - 기존의 하이퍼바이저를 사용한 가상 머신과 달리 리눅스로 운영체제가 고정되어 있어, - 운영체제별 작업이 줄어들어 성능이 향상된다. - Docker에는 다양한 프로젝트가 존재(아래는 그 예시) - Docker 프로젝트는 Docker Engine(Docker)를 효율적으로 사용할 수 있도록 도와준다. 그렇다면 Docker의 사용 이유? - 앞서, 잠깐 언급했던 것과 같이 D.. 2024. 1. 27.
[프로그래머스] 미로 탈출 명령어 2023 KAKAO BLIND RECRUITMENT 미로 탈출 명령어 문제를 풀어보았다. BFS를 사용하여 접근하였고 사전 순서대로 이동하는 것은 정렬대신, 알파벳 사전 우선순위를 토대로 해당 방향으로 먼저 움직이게 작성하였다. 맨 처음엔 시간 초과가 발생하여 bfs() 메소드 내의 반복문에 적절하게 시간 단축 로직을 추가 작성하였다. BFS import java.util.LinkedList; import java.util.Queue; /** * n x m (x, y) -k-> (r, c) */ class Solution { static int n; static int m; static int x; static int y; static int r; static int c; static int k; sta.. 2024. 1. 27.
Git Notion 정리 내용 간단한 Git 명령어들을 노션에 정리한 내용이다. git init # 깃 저장소를 초기화 한다. .git 파일이 들어감 # 작업 트리: 현재 활동 하고 있는 환경(작업 디렉토리) # 스테이지: add 하면 스테이지에 올라감 # 저장소: commit 하면 저장소에 올라간다. git status # 수정된 파일, 커밋해야 되는 파일 등등을 보여줌. git log # 커밋 내역을 보여줌 여기서 나오는 해시값을 이용해 reset, stash가 가능함(커밋 해시, 최신 버전, 작성자, 로그 등) git commit -am # 한 번 커밋한 파일은 add를 한 번에 수행 가능함 git diff # 방금 수정한 파일이 저장소에 있는 최신 버전의 파일과 어떻게 다른 지 확인이 가능 git log —stat # 커밋에 .. 2024. 1. 26.