STUDY

    [TIL] Entity의 선형 구조 / 트리 구조에 따른 구현 방식 비교 - Trouble Shooting

    프로젝트를 시작하면서 Deck에 대한 기능을 맡았고, 그 기능 중 순서에 대한 로직을 parent값을 줘서 LinkedList처럼 선형 구조로 만들었다. [TIL] parent_id로 순서 바꾸는 로직 구현 프로젝트 시작 Trello를 참고하여 프로젝트 협업 도구를 만드는 프로젝트를 진행하게 되었다. 내가 맡은 부분은 카드들을 담고 있는 Deck 관련된 기능이었다. 구현해야 하는 기능 내가 구현해야 하 argente29.tistory.com 그런데 생각해 보니 이 로직은 위치 수정에 관한 로직으로 옮겨져야 했고 생성 메서드에서는 제일 오른쪽 끝에 있는 Deck의 index를 찾아 그 오른쪽에 위치시켜야 했다. 여기서 문제는 제일 오른쪽 끝에 있는 Deck을 어떻게 찾는지 였다. 처음 생각한 로직 일단 D..

    [TIL] parent_id로 순서 바꾸는 로직 구현

    [TIL] parent_id로 순서 바꾸는 로직 구현

    프로젝트 시작 Trello를 참고하여 프로젝트 협업 도구를 만드는 프로젝트를 진행하게 되었다. 내가 맡은 부분은 카드들을 담고 있는 Deck 관련된 기능이었다. 구현해야 하는 기능 내가 구현해야 하는 기능은 다음과 같았다. ✔ Deck 생성 아무 위치에서 Deck 생성이 가능해야 한다.( 현재는 오른쪽 끝에서 생성하는 로직으로 변경하였다. ) ✔ Deck 단일 조회 Deck을 조회했을 때 Deck의 id와 name, 속해 있는 Card를 조회할 수 있어야 한다. ✔ Deck 위치 수정 Deck의 위치를 수정할 수 있어야 한다. ✔ Deck 이름 변경 Deck의 이름을 변경해야 한다. ✔ Deck 삭제(논리적 삭제) Deck의 Boolean 타입 필드 isDeleted 값을 true로 바꿔준다. ✔ 스케쥴..

    [TIL] Github Action 3 - Mockito 테스트(O)

    1. dev 브랜치에 푸시하거나 PR보낼때마다 CI check on: push: branches: [ "dev" ] pull_request: branches: [ "dev" ] 2. PR에 테스트 결과 코멘트로 알려 줄 때 필요한 허가. permissions: checks: write pull-requests: write 3. 레포지토리 체크아웃 레포지토리의 코드를 runner 컴퓨터에서 돌려볼 수 있도록 pull로 땡겨가는 코드. - name: 레포지토리 체크아웃 uses: actions/checkout@v3 4. 현재 내가 사용하는 Spring Boot는 3.x버전은 Java 17부터 지원하기 때문에 JDK 17 설치 - name: JDK 17 설치 uses: actions/setup-java@v3 ..

    [TIL] 수업 자료 - 카카오 로그인 분석

    [TIL] 수업 자료 - 카카오 로그인 분석

    수업 자료에서 카카오 로그인의 과정이 너무 빨리 지나가서 하나하나 뜯어보고 기록 > 1. 인가 코드 요청 GET 2. 인가 코드 요청 응답 -> Redirect_URI GET 3. 인가 코드로 액세스 토큰 요청 POST 4. access_token에서 카카오 사용자 정보 가져오기 5. 가져온 사용자 정보를 가져와서 추가로직 구현 6. User 정보로 JWT 토큰 만들어서 return. 7. JWT token 쿠키에 담아서 프론트에 넘겨주고 index.html로. 1. 프론트 단에서 버튼을 클릭할 때, 인가 코드를 받아오는 GET 요청을 보낸다. 이 때, client_id와 redirect_uri와 response_type을 쿼리 스트링으로 필수로 같이 보낸다. 사용자가 모든 필수 동의 항목에 동의하고 [..

    [TIL] Github Action 2 - Workflow 구성해보기(작성 중)

    Microsoft Developer Korea - Github Actions 영상을 참고하고 기록. 영상에서는 Node.js 프로젝트를 예시로 함. 목표 : Github Actions 워크플로우를 내 입맛에 맞게 작성할 수 있다. OS 종류와 Node 버전이 다양해요. → 빌드 매트릭스 이용하기 빌드할 때마다 테스트를 실행해서 불편해요. → 템플릿 변경해서 빌드 테스트 분리하기 다른 Job에서 빌드 아티팩트 접근이 안돼요. → Built-in 스토리지 이용하기 1. OS 종류와 Node 버전이 다양해요. 여러 타겟으로 동시에 빌드한다! → 매트릭스 빌드 여기에서의 매트릭스는 행렬! 예를 들어, Windows, Linux 버전에서 Node 12버전과 Node 14버전을 돌려야 할 때, Windows Lin..

    [TIL] 프로그래머스 - 상담원 인원(첫 lv.3 도전)

    [TIL] 프로그래머스 - 상담원 인원(첫 lv.3 도전)

    프로그래머스 2023 현대모비스 알고리즘 경진대회 예선 lv.3 - 상담원 인원 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 전체 문제 로직 2. 코드 public int solution(int k, int n, int[][] reqs) { // 각 유형마다 멘토가 배치됨에 따라서 대기시간이 어떻게 되는지 구한다. int[][] waitingTime = new int[n - k + 1][k]; // i명 배치할 때, 각 유형의 기다리는 시간 구하기 for (int i = 0; i < n - k + 1; i++) { // mentos : i+1명의 ..

    [TIL] Github Action이란? CI/CD에 대해

    [TIL] Github Action이란? CI/CD에 대해

    Github Action Github Action은 CI/CD를 위한 툴! 그렇다면 CI/CD가 뭔지 알아야 한다. 1. CI/CD 요즘같이 빠르게 변화하는 시대는 “어떻게 하면 시장과 고객의 요구에 빠르게 반응해서 제품 출시, 업데이트를 할 것인가!!”가 포인트. CI/CD는 어플리케이션 개발 단계부터 배포 때까지 이 모든 단계들을 자동화를 통해서 조금 더 효율적으로 빠르게 사용자에게 빈번이 배포할 수 있도록 만드는 것을 말한다! 1) CI(Continuous Integration) : 지속적인 통합 버그 수정이나 새로 만드는 기능들이 매일 Repository에 주기적으로 Build되고 Test가 되어서 머지되는 것! 포인트는 두 가지이다. 1. 코드 변경사항을 주기적으로 빈번하게 머지해야 한다. 두 ..

    [TIL] SpringBoot dependency 버전 맞추기!

    예전 프로젝트에서 QueryDSL을 사용하려고 할 때, 구글링을 해보는데 어떻게 초기설정을 맞춰야 할지 버전마다 너무 달라서 초기설정에만 하루가 걸렸던 적이 있다. 오늘 강의를 듣다가 그 시간을 줄일 방법을 찾았다. Dependency Versions docs.spring.io 지금의 스프링부트에 의존성을 추가할 때 몇 버전을 추가해야 좋은지 상세히 나와 있는 페이지다!! 전 프로젝트에서 진작 알았다면 좋았을 것을 ㅠㅅㅜ 지금 배우고 있는 JPA 강의가 예전 강의라서 의존성 버전을 다르게 해줘야 할 필요성이 생겼는데 강의에서 이 페이지로 가면 지금의 스프링부트와 궁합이 잘 맞는 버전을 찾을 수 있다고 가르쳐주셨다..! 다음에 새 의존성을 추가해야 할 일이 생기면 여기를 참고해서 적으면 될 것 같다!

    [4-2] Entity Mapping - 객체&테이블, 필드&컬럼

    [4-2] Entity Mapping - 객체&테이블, 필드&컬럼

    인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의노트 객체와 테이블 매핑 @Entity, @Table @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 ※ 주의 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) : 내부 동작하는데 필요하기 때문에(객체를 프록싱..하는데 쓰인다고 함!) final 클래스, enum, interface, inner 클래스 사용 X 저장할 필드에 final 사용 X → 추후에 왜 이 주의점들을 지켜야 하는지 알아보고 기록하자. @Entity 속성 name JPA에서 사용할 엔티티 이름을 지정한다. 기본값 : 클래스 이름을 그대로 사용(예 : Member) 같은 ..

    [Git] fork가 아니라 같은 Repo의 Collaborator일 때, Pull Request 방법 기록(레포지토리 파는 사람 / Collaborator)

    [Git] fork가 아니라 같은 Repo의 Collaborator일 때, Pull Request 방법 기록(레포지토리 파는 사람 / Collaborator)

    짧은 프로젝트라고 가정하고 Develop 브랜치까지 파지 않고 Main 브랜치와 각각의 기능별 브랜치를 판다고 가정. (Develop 브랜치를 파면 나중에 Develop 브랜치에도 규칙을 적용시켜 주면 된다.) 레포지토리 파는 사람이 할 일 1. 깃에서 레포지토리를 판다. README도 추가해 놓는다. README추가는 옵션! 근데 만들어놓는게 난 더 편했다. 내가 bash에서 명령어를 직접 입력하는데 README를 추가해놓지 않으면 깃허브에서 주는 명령어로 하는데 그거로 하다보면 오히려 헷갈린다.. 2. Settings - Branches - Add branch protection rule main 브랜치의 rule을 정하려면 Branch name pattern에 main을 적고 Protect matc..