
디자인 패턴 - 싱글톤, 팩토리 메서드, 전략 패턴
디자인 패턴 디자인 패턴이란, 프로그램 설계에서 자주 발생하는 문제를 해결하기 위한 일반적인 솔루션을 제공한다. 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 ‘규약’형태로 만들어 놓은 것이 곧 디자인 패턴이다. 객체지향적 디자인 패턴의 카테고리는 크게 ‘생성 패턴’, ‘구조 패턴’, ‘행동 패턴’으로 구분된다. 생성 패턴 ...
디자인 패턴 디자인 패턴이란, 프로그램 설계에서 자주 발생하는 문제를 해결하기 위한 일반적인 솔루션을 제공한다. 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 ‘규약’형태로 만들어 놓은 것이 곧 디자인 패턴이다. 객체지향적 디자인 패턴의 카테고리는 크게 ‘생성 패턴’, ‘구조 패턴’, ‘행동 패턴’으로 구분된다. 생성 패턴 ...
환경변수 때로는 로컬 개발 환경과 프로덕션 환경에서 다른 데이터베이스에 접근을 해야 하는 경우가 생기며, 키, 포팅이나 URL등도 환경에 따라 변동될 수 있다. Github을 사용할 때는 특히 이러한 환경변수가 포함된 .env 파일을 보안상의 이유로 직접 업로드하지 않는 것이 일반적이다. 그런데 Github Actions는 워크플로를 Github에...
의존관계 서비스의 인스턴스를 만들 때, 해당 서비스는 일반적으로 여러 인스턴스를 만들 필요가 없다. @Controller, @Service, @Repository등과 같은 데코레이터를 사용해서 스프링 컨테이너에 해당 클래스들을 등록할 수 있다. @Autowired를 생성자에 달아주면 필요한 의존성들을 주입시켜준다. 이러한 방식이 컴포넌트 스캔 방식...
스프링 입문 자바 스프링을 공부해보면 사고의 폭을 넓힐 수 있다는 동료의 추천에 도전해보기로 했다. 일단 당장 Node.js 기반의 프레임워크밖에 사용을 해본 경험이 없기 때문에, 별도의 언어와 프레임워크를 학습하는 경험을 가져가면, 자바-스프링뿐만이 아니더라도 다른 스택을 요구하는 상황에 놓일 때 더욱 원활하게 터득하여 사용할 수 있을 것이라는 생...
C++ C++는 C 언어의 기본 문법을 기반으로 하여 일부 기능을 확장한 프로그래밍 언어이다. 주요 확장 내용으로는 객체 지향 프로그래밍에 필요한 클래스, 상속, 동적 바인딩과 같은 기능이 있으며, C++는 템플릿과 예외 처리 기능도 제공하여 코드의 재사용성과 오류 관리가 용이하다. C++ 프로그램의 작성 및 빌드 크게 두가지 유형의 소스 파일이...
CI/CD CI/CD란 Continuous Integration과 Continuous Deployment의 약자이며, 이는 지속적 통합과 지속적 배포를 의미한다. 지속적 통합은 개발자가 코드를 병합할 때 자동으로 빌드와 테스트 등을 실행하도록 하여 코드의 품질을 보장하는 기술이다. 이러한 테스트나 빌드를 자동화함으로 작은 변경사항을 빠르게 검증할 ...
완성 오늘 성준님이 프론트엔드 UI부분을 마저 마무리해줌으로 드디어 완성이다. 약간의 놓친 부분들이 있을 수도 있겠다는 생각은 들지만, 꽤 만족한다. SQL, typescript, typeORM, tsyringe 등등 새로 배운 것들을 사용했으며, 아키텍쳐를 지난 프로젝트보다 짜임새있게 짰다고 생각한다. 마지막에 성준님이랑 맞춰볼 때, 루틴 수정...
문제점 기본적인 구현 자체는 모두 완료되었다. 단순한 회원가입 및 로그인부터, 루틴 등록 및 조회, 댓글, 제품 구매까지 처음에 기획했던 모든 요소들이 One-Flow로 작동한다. 그러나, 처음에 데이터베이스의 설계가 미흡했던 부분들이 기능들을 추가하는 데에 어려움을 준다. 우선, 현재 서비스의 알파이자 오메가는 ‘루틴’이다. 이 루틴에 각 단계...
캐싱 캐싱이란 빈번하게 접근되는 데이터를 빠르게 저장하고 검색하기 위한 기술로, 원래의 느린 저장 매체에서 반복적으로 데이터를 가져와야 할 필요를 줄여준다. 데이터의 복사본을 주저장매체보다 더 빠르게 접근할 수 있는 위치에 저장하여 속도의 향상을 이루어낸다. 캐싱은 브라우저 캐싱, 애플리케이션 레벨 캐싱, 데이터베이스 캐싱 등 다양한 수준에서 구현할...
필터링 corou는 루틴과 제품을 검색할 때 필터링을 할 수 있도록 기획되었다. 우선 두 가지 방법이 떠올랐다. 첫번째는 백엔드에서 getRoutineByFilter/getItemByFilter 메소드를 각각의 service파일에 만드는 것이다. async getRoutineByFilter( skin_type?: number, ski...