본문 바로가기

분류 전체보기51

[Spring] QueryDSL을 활용한 동적 쿼리(Dynamic SQL) 조회하기 (BooleanBuilder 활용) 1. Query DSL 이란?Spring boot에서 Spring Data JPA는 개발자가 간단한 CRUD 메서드 및 쿼리 메서드를 사용할 수 있다.하지만, 원하는 조건의 데이터를 검색해야 할 때 다양한 조건들이 있다면 매개변수는 점차 증가하게 되고 성능 및 가독성이 떨어진다.이때, 개발자는 JPQL을 활용해서 직접 SQL을 작성하여 데이터를 조작할 수 있지만, 로직이 점점 복잡해지면 마찬가지로 SQL에서의 개행이 반복되다보면 해당 쿼리가 어디에 어떻게 쓰이는지 알 수 없을 때가 있다. 또한, JPQL의 경우 복잡한 SQL을 작성하다보면 나올 수 있는 오타/문법적인 오류에 대해서 컴파일 시점에 확인할 수 없고 런타임에서 발생한 에러를 추적해야 한다. 이러한 불편함을 해소해주는 요소 중 하나로 Query.. 2024. 5. 14.
[백준] 17143번 낚시왕 (Gold 1) 문제링크 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 문제 접근 1. 2차원 배열에 상어가 존재 2. 각 상어들은 (방향 / 크기 / 속도)를 가진 객체 3. 매초마다 사람은 오른쪽으로 한칸씩 이동하면서 상어를 잡는다. 4. 상어가 이동하는 방향은 1->2->1 혹은 2->1->2 혹은 3->4->3 혹은 4->3->4 이다. 5. 즉, 상어는 아무리 많이 이동해도 매초 (R-1) * 2 마다 같은 위치에 위치하고 같은 방향을 바라보게 되어 실제로 움직이는 것은 (Speed % ((R-1.. 2024. 4. 20.
[백준] 17616번 등수 찾기 (Gold 3) 문제 링크 17616번: 등수 찾기 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에 세 정수 N, M, X가 공백을 사이에 두고 주어진다. (2 ≤ N ≤ 105, 1 ≤ M ≤ min(N(N-1)/2, 5×105), 1 ≤ X ≤ N) . 다음 M 줄에는 각각 두 정수 A, B가 주어 www.acmicpc.net 문제 접근 문제는 "최대 몇등부터 몇등까지 할 수 있냐" 를 구하는 문제다. 이 말은 "내 앞에 확정 몇명이 있고 + 내 뒤에 확정 몇명이 있냐" 를 묻는 것과 동일하다. 문제의 입력 형태 "a b"는 "a가 b보다 앞에 등수에 위치한다"는 뜻으로, 이를 통해서 2차원 벡터 vector arr[MAX] 를 통해 단방향 연결을 구현했다. 또한 vector rev_arr[MAX]를 통해 반대 .. 2024. 4. 18.
[회고] ASAC_04 해커톤 후기... 해당 포스팅은 ASAC 4기를 마무리하며 진행했던 해커톤에 대해서 간단하게 프로젝트를 진행하며 작성한 노션을 바탕으로 전체적인 흐름을 되뇌어보고 부족한 점을 회고하기 위한 글입니다. 이미 회고를 노션에서 했기 때문에 캡쳐가 대부분,,,, 0. 들어가기전ASAC 4기의 모든 이론 강의가 마무리되며 그동안 배웠던 것들을 실제로 활용할 수 있는 해커톤을 하루동안 해보자는 이야기가 나왔다.나는 해커톤을 진행해본 경험이 없기 때문에 무조건 좋다고 했다기간은 무박 2일로 진행 방법은 이랬다.먼저, 수업 중에 해커톤에서 해야하는 행동 / 하지 말아야 하는 행동으로 나뉘어서 온보딩을 했다.그후, 전날 주제를 발표한 뒤 각자 하나의 주제를 준비해갔다다음날 오전에는 각자 준비한 주제를 발표하고 팀을 짰다. 1. 팀 빌딩나.. 2024. 4. 17.
[Docker] Github Actions을 활용한 Spring 자동 배포, Docker Image run(CD) (2) 0. GitHub Actions를 통한 CD 프로세스 진행하기 전 이전 포스팅에서 Github Actions를 사용한 CI 자동화 프로세스 플로우에 대해서 알아봤다.  이번 포스팅에서는 CD 자동화 프로세스 플로우를 학습하고 구축하는 것을 목표로 하려고 한다.즉, 이번 포스팅에서는 진행할 내용 중요한 목차는 아래와 같다.Github Actions에서 EC2에 접근하기이때, IAM 기능을 통해서 Github Actions이 EC2에 접근할 수 있는 권한을 설정해야 한다.기존 EC2에서 구동중인 Docker Container 종료 후 CI를 통해 새롭게 생성된 Docker Image 구동사실 바로 처음 Docker Container를 구동한다면 종료하는 기능이 필요 없을 수 있지만 깔끔하고 에러가 없는 것이.. 2024. 4. 9.
[Docker] Github Actions을 활용한 Spring 자동 빌드, Docker Image push(CI) (1) 0. GitHub Actions 를 사용하기 전 Spring 프로젝트 CI/CD이전 포스팅에서 프로젝트 자체 빌드, 또는 Docker를 사용하여  프로젝트를 배포하는 프로세스 플로우에 대해서 알아봤다. 실제로 CI/CD 배포 프로세스는 매우 다양한 방법으로 진행할 수 있고 복잡한 프로세스를 통해 진행되기 때문에 설정을 제대로 하지 않거나, 프로세스 Flow를 제대로 이해하지 않는다면 굉장한 장애를 발생시킬 수 있다. 따라서 실제로 배포 프로세스를 잘 파악하고 있다면 배포 자동화 프로세스(CI/CD 프로세스)를 통해서 처음에 설정을 통해 편하게 배포를 할 수 있다.이러한 배포 자동화를 CI/CD(Continuous Integration, Continuous Deployment) 라고 한다. CI (Cont.. 2024. 4. 9.
[Spring] Spring MVC / 3-tier Layered Architecture 1. MVC 패턴의 개념과 Spring에서의 MVC 패턴 1-1. MVC 패턴 MVC 패턴이란? 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴어플리케이션을 개발할 때 개발 영역을 Model - View - Controller로 나누어 각 역할에 맞게 코드를 작성하는 방식UI 영역과 비즈니스 로직 영역으로 구분하여 서로에게 영향을 주지 않으며 개발 및 유지 보수가 가능하게 한다. 각 패턴 구분Model : 값과 기능을 가지고 있는 객체데이터 및 비즈니스 로직을 관리한다.추가적으로 3-tier Layer Architecture에서 서비스 계층에 비즈니스 로직이 들어가 있으므로 서비스 계층은 모델에 더 가깝다고 볼 수 있다.View : 모델에 포함된 데이터를 시각화하여 사용자에게 보여주는 역할Model을.. 2024. 4. 2.
[Docker] Local 환경에서 Spring에서 Docker 사용 실습 해당 실습은 Github / Github Action / Docker Registory / EC2를 활용하지 않고 Local 컴퓨터 내에서 Docker Desktop을 활용한 실습으로 진행할 예정이다. 실습 목표Spring 환경에서 Build를 통한 JAR파일 생성하기원하는 Docker Image를 생성하기 위해 Docker File을 생성Docker File과 JAR 파일을 가지고 Docker Build를 진행하여 Docker Image 생성생성된 Docker Image를 Docker Desktop과 터미널에서 Docker Run을 통한 Docker Container 구동0. 실습을 위한 환경 설정0-1. Spring 환경 설정하기spring 환경을 설정하기 위해 https://start.spring... 2024. 3. 31.
[Docker] Docker 개념 정리 및 Spring 환경 배포 프로세스 0. Docker 의 개념과 역할먼저 Docker의 자세한 개념과 설명은 이전 포스팅에서 다루었기 때문에 이번 포스팅에서는 간단하게만 다루도록 하자. [ASAC_04/Docker] Docker의 기본 개념Docker 사용 이유 : Consistency(일관성)와 Multiple Containers(다중 컨테이너) 어플리케이션 동작의 일관성을 갖기위해 (어느 서버나 컴퓨터에서 동작해도 정상적으로 동일한 동작으로 하기 위해) 어플리rnclf1005.tistory.com Docker는 컨테이너 기반 가상화 플랫폼으로, 응용 프로그램과 그 종속성을 격리된 환경인 컨테이너로 패키징하여 실행하는 기술이다.Docker를 사용하는 가장 중요한 개념은 "어플리케이션 동작의 일관성을 가지기 위해 사용한다."는 개념이다.여.. 2024. 3. 30.