MapleStory Finger Point
실무 예제로 배우는 Template Method Pattern
·
SPRING
여느 때와 같이 운영업무를 진행하고 있었는데, 특정 필드의 수정이력을 쌓아달라는 요청이 왔다.그래서 우리 프로젝트의 History를 쌓는 로직을 살펴보고 있었는데, 도서에서만 접한 Template Method Pattern이 적용되어 있었다. 그래서 이번 주제는 Template Method Pattern에 대해 간단하게 설명하고 실무에 적용된 Template Method Pattern 예제를 통해 도입을 고민하는 분들에게 조금이나마 도움을 주고싶다. Template Method Pattern 설명GoF의 디자인 패턴 도서에서는 템플릿 메서드를 아래와 같이 정의하고 있다."템플릿 메서드 패턴은 알고리즘의 골격을 정의하고, 일부 단계를 서브클래스에서 구현하도록 한다. 즉, 알고리즘의 구조는 변경하지 않으면서..
[운영일지] IF 지옥을 벗어나보자.
·
운영일지
'운영일지'라는 카테고리를 만들어보았다.아무래도 현재 팀은 서비스 운영하는데 초점을 두고 있기 때문에 운영을 하면서 생긴 노하우, 지식이 많을 것이라고 생각했다. 다만, 팀에 들어온지 한달이 안되었기 때문에 업무자체가 단순 오류수정이 많아 성능을 개선한다거나 구조를 변경한다거나 이런건 없어서 초반에는 Clean Code에 관련한 내용이 더 많을 것 같다. 그리고 운영일지의 글 흐름은 문제 상황(운영 접수 건) > 고민사항 > 해결 방안 순으로 진행하려고 한다. 필자와 동일한 고민을 했던 사람들에게 공감을 이끌어낼 수 있는 글을 앞으로 작성하려고 한다. (띵동) 쪽지가 도착했습니다.쪽지 내용을 살펴보면 변경이력을 관리할 때, DB에서 사용하는 코드 값이 아닌, 사용자가 알 수 있는 실제 값으로 변경해달라는..
GC Overhead limit exceeded 로 시작하여 JVM ... (생략)
·
JAVA
새해를 맞이하여 회사에서 나에게 서프라이즈를 준비해주었다.그것은 바로 팀이동이였다..!! (사실 n번째라 놀라지 않음)어찌되었든 새로운 환경에서 살아남기 위해 다시 치열하게 싸워보려고 한다. 팀이동을하면 가장 먼저하는게 무엇인가?바로, 개발환경 세팅이다. 프로젝트를 clone하고 build를 진행했다.위 이미지같이 GC overhead limit exceeded 원인으로 OutOfMemoryError가 발생하고 있다. 잉..? 이런 에러는 살면서 처음보았다.빨간줄을 없애보자 Build 시, GC overhead limit exceeded를 해결하는 것은 Intellij 환경에서는 식은 죽먹기이다. Intellij의 Setting > Build, Execution, Deployment > Compiler ..
Spring AI를 사용해보자.
·
SPRING
오늘은 사내프로젝트에서 사용했던 Spring AI에 대해 소개하고 간단한 실습을 해보려고 한다!사실 공식문서가 엄청나게 잘되어 있어서 개념 설명보다는 실습 위주로 풀어나가겠다~~  Spring AI ? AI Engineering, AI Serving과 관련된 작업을 할 때, 대표적으로 python을 많이 사용하고 있다. 그런데, 이제 스프링에서도 Serving 정도는 간단하게 작업할 수 있다!! 즉, AI Engineering을 위한 애플리케이션 프레임워크라고 생각하면 된다. 공식문서에 의하면 해당 프레임워크의 핵심은 기업 데이터와 API를 AI 모델과 연결하는 AI 통합이다.  Spring AI의 특징은 공식문서에 상세하게 나타나있어 여기에는 담지 않겠다 ㅎ(https://spring.io/projec..
[JAVA] Enum "equals" vs "=="
·
JAVA
오~~~늘은 Enum의 동등비교에 대해 알아볼 예정이다!! 그런데,, 왜?! 갑자기 이런 주제를 똭하고 가져왔는지 궁금해할 수 있다.코드리뷰를 진행하다보니.. 다들 equals, == 을 혼용해서 사용하고 있었다. 쉽게 아래 예제를 보면// A 개발자if (moveStatus.equals(MoveStatus.CANCEL)) { return CommonResponse.fail("애니웨이 실패했습니다람쥐");}// B 개발자if(MoveStatus.CANCEL.equals(moveStatus)){ return CommonResponse.fail("애니웨이 실패했습니다금바리");}// C 개발자if(MoveStatus.CANCEL == moveStatus){ return CommonRespon..
MyBatis에서 Helper 클래스 적용하기 (StringUtils, CollectionUtils...)
·
SPRING
오늘은 회사 프로젝트를 진행하면서 생긴 이슈와 이를 해결하기 위한 일종의 회고를 써보려고 한다. SI 회사에서 업무를 진행하다보니, MyBatis를 좀 많이 쓰는 것 같다. 일단, 프로젝트를 부탁하는 곳에서 JPA 보다 좀 더 직관적으로 쿼리문을 살펴볼 수 있는 MyBatis를 선호하는 경향이 있는 것 같다. 그래서 필자는 회사 경험에서 JPA를 써본적은 없고 MyBatis만 써보았다. 그러다보니 MyBatis에서 좀 더 효율적으로 코드를 작성할 수 있는 방법을 많이 찾게 되었다. 이번 글은 단순 호기심에서 해결 방안까지 도출한 경험을 작성하려고 한다! 꽤 유용한 내용도 있으니 재미있게 이 글을 봐주셨으면 좋겠다. (알쓸신잡 느낌 ㅎ)  동적 쿼리문에서 StringUtils.hasText()를 사용할 수..
Java에서 Stack Class는 함정카드다.
·
JAVA
프로젝트를 진행하다가 Last In First Out과 같은 자료구조를 활용한 경험이 있다.그래서 Stack을 사용하려고 했는데, 얼핏 누군가가 나에게 "Java Stack은 지양해주세요." 라는 말을 했던 것 같다..  Java에서 Stack 사용을 왜 지양해야하는지, 공부했던 내용을 공유하고자 한다.Stack은 무엇인가요? 스택에 대한 내용은 이미 잘 아시겠지만~ 리마인드 차원에서 간단하게 짚고 넘어가보자!스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조이며 Last In First Out 매커니즘을 가지고 있다. Java에서 간단한 Stack 사용법을 보자면..import java.util.Stack;// initStack st = new Stack();// pushst.push(1);s..
정적 팩토리 메서드(Static Factory Method) 맛보기
·
SPRING
이번에 프로젝트를 진행하면서 정적 팩토리 메소드를 도입해보았는데, 동료들에게 꽤 좋은 평가를 받아 이번 주제로 글을 작성해보려고 한다..!! 이번 글을 한줄 요약하자면 정적 팩토리 메소드란 무엇이고 도입 배경을 소개하는 것이다. 정적 팩토리 메소드 정적 팩토리 메소드는 23개의 디자인 패턴을 수록한 'GoF' Design Patterns에서 소개하고 있는 팩토리 메서드를 응용한 디자인 패턴이라고 생각하면 된다. 오호라.. 그렇다면 팩토리 메소드를 이해하지 않고는 정적 팩토리 메소드를 이해하기란 어렵다는 말씀?! 꼭 그렇지는 않지만 완전한 이해를 위해 GoF 디자인 패턴 책에서 소개하고 있는 "팩토리 메서드"를 먼저 알아보고 "정적 팩토리 메서드"에 대해 설명하겠다. 팩토리 메서드(Factory Metho..
📌 공지사항

1. 광고 댓글 자제 부탁드립니다😭😭

2. 업무 중에는 질문 답변이 늦을 수 있습니다!

3. 초보자라 잘못된 부분이 많습니다
     많이 알려주세요😊

4. 이 블로그가 성공하더라도 광고로 수익 창출
     하지 않겠습니다🫡


📧 mjoo1106@naver.com