반응형 분류 전체보기181 Strategy Pattern, 전략 패턴 전략 패턴이란?우리가 슈퍼를 갈 때 버스 타고 가거나, 걸어가거나, 자전거를 타고 가는 등의 여러 가지 방법이 있다.이러한 방법으로 갈때의 길을 미리미리 알아두고 그때그때 끌리는 것으로 가곤 한다.이처럼 프로그래밍에서도 여러가지 방법을 구현해 놓고 클라이언트가 런타임 시기에 알맞은 전략을 사용할 수 있도록 하는 것이 바로 전략 패턴이다. 전략 패턴을 사용했을 때의 장점코드 중복을 줄일 수 있다.기존 코드없이 새로운 전략을 추가할 수 있다.런타임 시에 전략을 선택할 수 있다. 언제 전략 패턴을 고려해야 하는가?여러 전략 중 한 가지의 전략을 선택해야 할 때전략 알고리즘을 자주 변경 해야 할 때상태 패턴을 사용했을 때의 단점전략이 많아지면 코드가 매우 많아질 수 있다는 단점 (복잡도 상승)클라이언트에서 전략.. 2024. 10. 17. State Pattern, 상태 패턴 상태 패턴이란?우리가 엘리베이터를 타면 수리 중, 운행 중, 대기 중일 때에 동작이 다르다.수리 중에는 버튼을 아무리 눌러도 동작하지 않도록 되어있고 운행 중에는 열림버튼이 동작하지 않는다.대기 중일 때야 비로소 열림버튼이 정상적으로 동작을 한다.이처럼 상태에 따라서 같은 행위를 하더라도 동작이 달라지도록 만드는 것이 바로 상태 패턴이다. 상태 패턴을 사용했을 때의 장점상태별로 복잡한 조건문을 작성하는 것 대신 클래스로 나누어서 코드 가독성이 높아진다.상태가 추가되거나 삭제될 때 기존의 코드를 거의 수정하지 않고 추가/수정할 수 있다.언제 상태 패턴을 고려해야 하는가?상태에 따라서 객체의 행위가 달라지는 경우조건문으로 처리하기엔 많은 경우의 수가 존재하는 경우상태 패턴을 사용했을 때의 단점 다양한 상황을.. 2024. 9. 11. [Jenkins] 젠킨스내에서 jdk버전 여러개 사용하기 / 변경하기 회사 내에서 개발기에 배포하는 과정을 자동화시키기 위해서 서버에 젠킨스를 적용하는 과정에서 발생한 이슈이고 정리하기 위해서 글을 작성한다...! 문제 상황 정리현재 Jenkins는 docker를 이용해서 jdk-17 버전으로 사용 중이다. (즉, 컨테이너 내부는 jdk-17)하지만 내가 진행한 프로젝트는 jdk-1.8을 사용한다.버전이 달라 컨테이너 내부에서 gradlew build를 진행할 수 없다..!!어떻게 해결할 수 있을까? 빌드할 때 java의 버전을 동적으로 변경시켜주어야 한다.그렇다면 먼저 볼륨을 연결해서 거기에 jdk를 설치해 두고 스크립트를 짜서 step을 시작할 때 환경변수를 바꿔주면 되지 않을까? 생각했다.(왜냐하면 현재 로컬에서는 스크립트를 짜서 동적으로 java버전을 관리하고 있기.. 2024. 6. 12. 2024 팀네이버 신입 공채 지원 후기 매일매일 회사 - 헬스장 - 집을 가는 반복적인 삶을 살고 있었다...코딩 문제를 조금씩 풀어나가던 차에 조금은 문제들을 어떻게 풀어야 할지 눈에 보이기 시작할 때쯤 (정말 뭣도 없는 자신감에 차있는 상태였다...) 우연히 팀네이버 신입 공채를 보게 되었고, '어? 공짜 코딩테스트!? 이건 못참치ㅋㅋ' 하면서 지원하게 됐다.자기소개서 항목들에 대해서 살펴보면1. 가장 자신하는 분야2. 가장 열정을 갖고 임한 프로젝트 소개 (문제 해결 중심)3. github 주소 및 포트폴리오이렇게 있었다. 나는 그동안 해왔던 것들을 종종 정리했었기 때문에 자기소개서는 그렇게 어렵지 않게 작성할 수 있었다.이건 그냥 자신이 해왔던 것들을 잘 정리하면 될 거라고 생각한다.온라인 코딩테스트(+ 기업문화 적합도 검사)서류결과가.. 2024. 6. 6. Observer Pattern, 옵저버 패턴 옵저버 패턴이란? 스타크래프트를 했던 사람이라면 옵저버에 대해서 알고 있을것이다. 옵저버는 상대방을 감시하기 위해서 사용한다. 마찬가지로 옵저버 패턴은 주체의 상태 변화를 감지하고, 그 변화에 대해서 옵저버들에게 알림을 주는 디자인 패턴이다. 주로 여러 객체에게 변경을알려줘야 할때 사용한다. 스타크래프트에선 알림을 주진 않지만 여기선 감시하면서 알림까지 준다! 옵저버 패턴을 사용했을 때의 장점 느슨한 결합을 유지할 수있다. 주체는 옵저버의 인터페이스만 알면되기 때문이다. 쉽게 옵저버를 추가하거나 제거할 수 있다. (개방 폐쇄 원칙) 언제 옵저버 패턴을 고려해야 하는가? 어떤 객체의 상태 변경이 하나 이상의 다른 객체에 영향을 미칠 때 여러 객체들이 하나의 객체를 관찰해야 하고, 관찰 대상 객체는 관찰자의.. 2024. 4. 1. Memento Pattern, 메멘토 패턴 메멘토 패턴이란? 객체 내부의 상태를 공개하지 않으면서 외부에 저장하여 객체의 상태를 이전 상태로 복원할 수 있도록 해주는 패턴이다. 즉, 캡슐화를 깨트리지 않고 내부 상태를 외부에 저장할 수 있도록 하는 패턴이다. 주로 되돌리기나 상태의 스탭샷에 사용된다! 메멘토 패턴을 사용해야 하는 이유? 객체의 이전 상태를 저장하고, 필요할 때 이 상태로 객체를 복원할 수 있다. 객체 내부 상태에 대한 접근을 제어해서 캡슐화를 유지할 수 있다. 따라서 외부에 객체의 상태를 공개하지 않고 저장하고 복원할 수 있다. 객체의 상태 관리를 단순화한다. 상태를 저장하고 복원하는 작업을 객체 외부에서 수행하여 객체 자체는 상태관리 로직으로부터 자유로워진다. 메멘토 패턴을 언제 사용해야 하는가? 되돌리기 기능을 제공해야 할 때.. 2024. 3. 27. Mediator Pattern, 중재자 패턴 중재자 패턴이란? 객체들 간의 상호작용을 중재하는 패턴이다. 객체들끼리 직접 통신하는 방식이 아닌 중재자를 통해서 상호작용하도록 하는 방식이다. 항공기 관제탑을 보면 이해할 수 있다. 비행기끼리 통신을 할 수는 있지만 모든 통신을 각자 하게 되면 통신을 받지 못하는 비행기도 생기고, 통신이 매우 난잡해질 것이다. 그래서 모든 비행기들은 관제탑을 통해서 통신을 하면서 조율을 하게 된다. 중재자 패턴을 왜 사용해야 하는가? 객체 간의 결합도를 낮춰준다. 새로운 객체들을 도입할 수 있다. 단일책임원칙을 지켜 유지보수와 재사용을 쉽도록 만든다. 패턴을 언제 사용해야 하는가? 객체들이 서로 복잡하고 강하게 결합되어 있는 경우 객체들간 직접적인 상호작용이 코드를 복잡하게 만들어 유지보수가 어려운 경우 문제점 중재자.. 2024. 3. 7. [postgresql] data 디렉토리 변경 운영 중인 리눅스에서 /의 용량이 점점 부족해지는 것을 확인하게 되었다... 원인은 postgreSQL의 물리저장 위치가 기본적으로 /var/lib/pgsql/13/data이라서 용량이 적은 디스크가 마운트 되어있는 곳에 위치하고 있는 것이었다.이대로 가다간 디스크의 용량이 가득 차 데이터베이스가 고장날것이 눈에 보였다...기존에 사용하던 데이터베이스였기 때문에 데이터를 그대로 옮겨야 했다. 데이터가 쌓이는 물리위치인 data의 위치를 변경하면 해결이 가능할 것으로 보였다.먼저 버전마다 설치 방법마다 data 디렉터리의 위치가 다르다. 이를 확인하기 위해서 psql에 접속한 뒤 해당 명령어를 작성해 주자. (pgsql의 bin 폴더에 있다.)show data_directory;[postgres@DB ~].. 2024. 3. 6. Iterator Pattern, 반복자 패턴 반복자 패턴이란? 컬렉션에는 리스트, 트리, 그래프 테이블 등등이 있다 리스트나 배열 같은 경우 단순히 반복문을 통해서 순차적으로 접근할 수 있지만 트리나 그래프 같은 경우 순회는 방법을 잡기 매우 애매해진다. 예를 들어 트리의 경우에도 깊이우선탐색, 너비우선탐색이 있으니 말이다. 이런 경우 이터레이터 패턴을 통해서 원소에 접근하는 방법을 추상화하여 이터레이터 패턴을 적용시킬 수 만 있다면 사용자가 원하는 방법으로 편하게 접근할 수 있게 된다. 접근하는 방법을 추상화하여 분리하였기 때문에 컬렉션의 내부 구조를 드러내지 않고 순차적으로 요소를 접근할 수 있게 된다. 패턴을 왜 사용해야 하는가? 컬렉션의 내부 구조를 숨길 수 있다. 즉, 내부 구조 및 순회방식을 알지 않아도 사용할 수 있다. 컬렉션의 구체적.. 2024. 2. 28. 이전 1 2 3 4 ··· 21 다음 반응형