개요그린메이트 배포 자동화를 위해 GithubAction을 도입했다.이전에는 단순히 매번 배포하는게 귀찮아서 쉘 스크리트로 작성해서 Github Action과 연동해서 배포했다.근데 AI서버를 도커로 배포하는 상황이었기에 배포 방식을 통일하고 이번 기회에 한번 써볼겸 하고 사용했다. 물론 중간에 도커로 배포하고, 이후에 Blue-Green배포 방식을 적용했지만 블로그에서는 최종 결과만 갖고 이야기 할것이다. Github Action yml파일# This workflow uses actions that are not certified by GitHub.# They are provided by a third-party and are governed by# separate terms of service, pr..
작년에는 설을 앞두고 회고를 썼는데, 이번에는 설이 지나고 겨우 힘을 내 쓴다언제나 글쓰는건 큰 마음을 먹고 하게 된다. 개발개발 서적 6권 이상 독서꾸준한 알고리즘 공부 및 백준 골드 1이상 달성이전 프로젝트 2개 이상 리팩토링Spring Security 및 Spring Data JPA 공부NoSQL 및 DB 심화 공부비개발인턴 1회 이상 혹은, 취업운동을 비롯한 나만의 루틴 만들기자격증 3개 이상 취득여행 2회 이상 다니기새로운 경험 도전하기 내가 작년 이맘때 회고를 쓰며 설정한 2024 계획이다.지금보니 개발적인 것보다 비개발을 더 많이 성공한거 같은데 한번 짚어보자 1. 개발 서적 6권 이상 독서-> 어림없지 딱 2권 읽었다. 정확히는 시도한 책들은 많으나 완독한 책은 딱 두권뿐이다.책 읽는거 자..
개요 졸업프로젝트에서 사용자가 다른 사용자의 산책기록을 보고 좋아요를 클릭하는 과정이 필요하다. 좋아요 테이블을 생성하던 중 복합 기본키를 생성하는 것이 필요해짐. 좋아요 테이블의 경우 User의 PK와 산책 기록의 PK 두 컬럼으로 이루어져 있다. 평소같았으면, PK를 추가했겠지만, 식별관계로 만들면서 PK가 따로 존재하지 않는다. 이 과정을 JPA로 어떻게 매핑하는지 확인해보자 복합 기본키를 생성하는 방법 2가지 2가지 방법의 공통점 두 방법 모두 Serializable 인터페이스를 구현하여 키 클래스를 생성해야 한다. hashCode(), equals() 두개의 메소드가 오버라이딩해야 한다. 기본 생성자가 필요하다. public 접근제어자 설정이 필요하다. @NoArgsConstructor @Equ..
자바 인터페이스자바 인터페이스를 통해 구현하는 클래스는 인터페이스에서 정의하는 모든 메서드 구현을 제공하거나 슈퍼클래스의 구현을 상속 받아야 한다.평소에는 이 규칙을 지키는 데 아무 문제가 없지만, 라이브러리 설계자 입장에서 인터페이스에 새로운 메서드를 추가하는 등 인터페이스를 변경하게되면 문제가 발생한다.(바이너리 호환성은 유지)바이너리 호환성?새로 추가된 메서드를 호출하지만 않으면 새로운 메서드 구현이 없어도 기존 클래스 파일 구현이 잘 동작한다는 의미. 바이너리 실행에는 인증, 준비, 해석 등의 과정이 포함 됨.그 외 호환성소스 호환성코드를 고쳐도 기존 프로그램을 성공적으로 재컴파일할 수 있음을 의미인터페이스에 메서드 추가하는건 소스 호환성을 만족시키지 않는다. 코드를 수정해야하기 때문.동작 호환성..
0. 개요 사용자의 요구사항은 시시각각 변함 그에 맞게 엔지니어링을 꾸준히 변화해야 하는데, 비용을 최소화하면 좋음 동작 파라미터화를 통해 자주 바뀌는 요구사항에 대해 대응할 수 있도록 함 메소드의 인수로 코드 블록을 전달함으로써 ‘동작’ 자체를 인수로 전달할 수 있음. 리스트를 예로 들면, 아래처럼 진행 가능함 리스트의 모든 요소에 대해서 ‘어떤 동작’을 수행 리스트 관련 작업을 끝낸 다음 ‘어떤 다른 동작’ 수행 에러가 발생하면 ‘정해진 어떤 동작’을 수행 1. 변화하는 요구사항에 대응 예컨데, “필터링”하는 작업에서 기준이 달라지는 경우가 있다. 현재는 녹색사과만 선택(필터링)하고 있다. 만약, 빨간사과도 필터링하고자 하면 어떻게 고칠까?? public static List filterRedAppl..
매우 늦은 글쓰기 회고글을 쓰고 싶었지만 항상 그랬듯(?) 미루고 미루다가 설이 지나기 전 드디어 써본다. (물론, 다른 공부하기 싫어서 그런것도 있다 하하) 2023년은 정말 다사다난하고 정신없던 한 해여서 어떻게 정리해야 할지 모르겠다. 굳이 나눠보자면 휴학을 기점으로 크게 상반기와 하반기로 나눌 수 있을거 같다. 2023년 상반기 상반기엔 크게 두가지 이슈가 있었다. 하나는 동아리 회장, 하나는 KB IT아카데미이다. 백투더 3학년... 나는 2022년 처음으로 IT 동아리 활동을 했다. 지금와서 동아리 활동이 만족스러웠나? 생각하면 100%만족했다고 할 수는 없지만, 분명 내 대학생활의 큰 변환점이 된건 사실이다. 군 전역 후 3학년 복학하고 적응하기에 벅찼다. 특히, 3-1에는 코로나로 인해 많..
개요 2장은 객체의 생성과 파괴에 대해 다룸 객체를 만들어야 할 때와 만들지 말아야 할 때를 구분 올바른 객체 생성 방법 불필요한 생성을 피하는 방법 제때 파괴됨을 보장하고 파괴 전에 수행해야 할 정리 작업을 관리하는 요령 1. 생성자 대신 정적 팩터리 메서드를 고려하라 일반적으로 클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자이다. 클래스는 생성자와 별개로 정적 팩터리 메서드를 제공할 수 있다. JDBC같은 경우가 대표적인 예시이다. 장점 이름을 가질 수 있다. 생성자에 넘기는 매개 변수와 생성자 자체 만으로는 반환될 객체의 특성을 설명하지 못한다. 하지만, 정적 팩터리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다.반복..
이번 여름에 7월부터 9월까지 3달간 진행했던 교육과정에 대해서 후기를 드디어.. 남겨본다. 매일매일 미루고 미루다가 하나은행에서도 비슷한게 보여서 생각난 김에 바로 적는다! 1. 지원 과정 멀티캠퍼스 event.multicampus.com 어쩌다 접했는지는 기억이 나지 않는다. 아마 인스타 광고같은거 였던거 같은데, 참 귀신같다. 아무튼 들어가봤는데, 일단 금융권에서는 리드기업인 KB에서 진행하고, 멀티캠퍼스라는 든든한 교육 단체가 붙어있어서 사실 무조건 써야겠다 했다. 게다가 졸업 예정자도 가능...! 근데 후기를 찾아보니 조금 걱정됐던건 1,2기때는 AI와 Python을 위주로 진행했는데, 3기부터는 Spring으로 바뀐 점이었다. 사실, 나는 스프링을 공부하니까 "오히려 좋아"긴 했지만, 걱정됐던..