분류 전체보기 (19) 썸네일형 리스트형 전략 패턴을 더 간결하게: 템플릿 콜백 패턴 Spring에서 AOP, 트랜잭션 처리, 템플릿 메서드 등 다양한 기능을 학습하던 중, 익숙한 전략 패턴과 매우 닮은 구조의 템플릿 콜백 패턴을 마주하게 되었습니다. 처음엔 전략 패턴을 조금 더 간단하게 쓴 방식 정도로만 느껴졌지만, 실제로 자주 사용되는 중요한 패턴 중 하나입니다. 이번 글에서는 전략 패턴과의 차이점, 그리고 실무에서 어떻게 활용되는지를 중심으로 정리해보려 합니다.이전 글 변하는 알고리즘을 분리하는 디자인 패턴: 전략 패턴최근에 Spring AOP에대해 공부하면서 Spring에서 Bean 주입을 다루거나, 조건에 따라 다른 구현체를 선택해 사용하는 상황을 자주 마주치면서, 그동안 이름만 알고 있던 전략(Strategy) 패턴의 필요성과dev-code.tistory.com 템플릿 콜.. 변하는 알고리즘을 분리하는 디자인 패턴: 전략 패턴 최근에 Spring AOP에대해 공부하면서 Spring에서 Bean 주입을 다루거나, 조건에 따라 다른 구현체를 선택해 사용하는 상황을 자주 마주치면서, 그동안 이름만 알고 있던 전략(Strategy) 패턴의 필요성과 구조가 조금씩 체감되기 시작했습니다.예를 들어 특정 상황 등(예: 결제 방식, 필터 조건, 정렬 알고리즘 등)이 상황에 따라 달라져야 할 때,하드코딩된 조건문(if-else)을 제거하고, 유연하게 알고리즘을 교체할 수 있는 구조가 필요했습니다.다양한 문제 상황에서 유용하게 사용할 수 있는 전략 패턴(Strategy Pattern)의 구조와 사용 시점,그리고 간단한 예제를 통해 그 개념을 정리해보려고 합니다. 전략패턴 ( Strategy Pattern )컴퓨터 프로그래밍에서 전략 패턴(정.. 반복되는 흐름을 정리하는 디자인 패턴: 템플릿 메서드 패턴 최근 Spring AOP를 공부하던 중, 공통 로직과 핵심 로직을 분리하는 구조에서 템플릿 메서드 패턴(Template Method Pattern)이 등장하는 걸 보게 됐습니다. 그동안 디자인 패턴관련 내용들이 나오면 조금 추상적으로 느껴졌던 개념이었는데, 이번 기회에 디자인 패턴들에 정리해보려고 합니다. 템플릿 메소드 패턴 ( Template Method Pattern )템플릿 메소드 패턴(template method pattern)은 소프트웨어 공학에서 동작 상의 알고리즘의 프로그램 뼈대를 정의하는 디자인 패턴이다. 알고리즘의 구조를 변경하지 않고 알고리즘의 특정 단계들을 다시 정의할 수 있게 해준다. (feat.위키 백과) 템플릿 메소드 패턴의 구조 템플릿 메서드 패턴은 상위 클래스(Abs.. 손으로 하던 사과게임, 이제는 자동으로! Python으로 만든 매크로 이야기 사과게임 메크로를 만들게 된 계기평소에 가끔 심심할 때 사과게임을 하곤 했습니다. 하다 보니 반복적으로 같은 패턴으로 사과를 찾고 드래그하는 과정이 많았고,문득 "이거 메크로로 만들면 되겠는데?"라는 생각이 들었습니다.딱히 거창한 이유는 없고, 그냥 심심해서 재미삼아 직접 만들어보기로 했습니다. 사과게임이 뭔데?사과게임(Fruit Box)은 17 X 10 격자에 무작위로 있는 사과(1~9 숫자)를 마우스로 드래그해서 합이 10이 되도록 조합 하는 퍼즐 게임으로 최대한 많은 사과를 없애 높은 점수를 기록하는것이 목표입니다. 사과게임 해보기 구현 Python을 선택한 이유사과게임 메크로를 만들면서 가장 핵심이라고 생각했던 부분은 게임 화면에 있는 숫자들을 정확하게 추출하는 것이었습니다.이.. Fixed length format과 getByte()의 예상치 못한 함정 프로젝트에서 필요한 데이터를 모아 특정 규칙에 맞게 본문을 재구성한 뒤, 다른 서버로 전송하는 기능을 맡은 적이 있다.이 작업을 위해,데이터 전송에 필요한 라이브러리본문의 Layout 작성 규칙이 담긴 엑셀 파일전송 방법의 예시를 전달받았다.전문을 구성하는 방식을 살펴보니, 각 필드의 길이를 최대 크기로 고정하는 방식이었다.대학 전공 수업에서 TCP 패킷을 공부할 때, 데이터의 크기를 고정시켜 송수신하는 방식을 접한 적이 있었는데, 그때는 그냥 "이런 방법이 있구나" 하고 넘어갔었다. 그런데 실제 프로젝트에서 이 방식을 적용해볼 수 있다는 점이 흥미로웠다.이번 글에서는 이 방식을 적용하면서 겪은 문제와 해결 과정을 기록해보려 한다. 인터넷에 검색해보니까 이런 유형의 데이터 송수신 방식을 Fixed.. URL Encode 왜 필요해? URL 인코딩(Url Encoding)은 개발자가 기본적으로 알고 있어야 하는 개념이지만, 제대로 이해하지 않고 사용하면 예상치 못한 오류를 초래할 수 있습니다. 저 역시 이를 간과했다가 실수를 경험했고, 이번 기회에 제대로 정리해보고자 합니다. URL Enocde 왜 필요해? - URL에서는 일부 문자만 정상적으로 처리할 수 있다 - 허용되지 않은 문자가 포함되면 문제가 생길 수 있기에 URL Encode가 필요 - 일부 문자는 URL에서 특수한 의미를 가진다 그래서 누가 정했는데?RFC 3986? RFC 3986은 URI(Uniform Resource Identifier)의 문법과 문법 규칙을 정의하는 공식 문서로즉, 웹에서 사용되는 URL(Uniform Resource Locato.. AWS 아키텍처 개선 하기 AWS 아키텍처 개선 처음부터 AWS의 서비스들을 체계적으로 설계한건 아니였습니다. 하나의 계정에서 시작하여 서비스들을 하나씩 추가하다 보니 점점 서비스별 비용 추적이 어려워졌고, 규칙이 정해저있지 않고, 여러 작업자가 참여하면서 어떤 서비스가 어디에 연결 되어있는지 찾는것또한 쉽지 않았습니다. 또한, 모든 작업자가 AWS의 기능을 완벽히 이해한 상태가 아니었고, 필요에 따라 학습하며 서비스를 구축하다 보니 초기 설계가 최적화되지 않았습니다.이에 따라 운영 및 유지에 필요한 AWS 비용을 분석하고, 이를 바탕으로 비용 절감이 가능한 부분을 개선하는 작업을 진행하였습니다. 문제점개선작업을 진행하기전 어떤 문제가 있는지 문제의 큰 줄기들을 정리해봤습니다.하나의 AWS 계정에 크고 작은 여러 서비스가 운.. Github Actions으로 서버배포 자동화하기 (1) 프로젝트를 배포하는 과정은 생각보다 시간이 오래걸릴 수 있습니다. 특히 프로젝트 처음에는 Docker 이미지 파일을 빌드하고, Docker Hub에 업로드한 뒤, 서버에서 해당 이미지를 배포하기까지 약 5분정도가 소요됬습니다. 작은 수정이라도 배포할 때마다 동일한 작업을 반복해야 한다는 점에서 비효율적이라는 것을 느꼇고 이를 개선하기 위한 자동화 방안을 고민하기 시작했습니다. 이 글에서는 제가 겪었던 문제와 이를 해결하며 점진적으로 자동화 시스템을 구축한 과정을 공유 하고,자동화의 필요성을 느끼는 분들에게 이글이 조금이나마 도움이 되었으면 합니다. 프로젝트 배포 과정에서 가장 먼저 느낀 점은 작업의 반복성과 효율성 부족이었습니다. 수동으로 이미지를 빌드하고 업로드하며 서버에서 배포하는 일련의 과정.. 이전 1 2 3 다음