은로그
[회고] 2024 Backend 개발자 회고
개발자 회고2024년도는 목표를 구체적으로 세우지 않고 흘러가는 대로 시간을 보냈던 것 같다. 어떻게 지냈는지 뒤돌아보니 아쉬움과 미련이 남는 한 해가 된 거 같아,2025년도에는 목표를 설정하고 그에 맞춰 행동하도록 노력해야할 것 같다. 이번 글에서는 지난 시간을 돌아보고 느낀 점들과 앞으로의 목표를 정리해보려고 한다. 이번 년도는 어떻게 지냈을까?첫 개발자 취직2024년의 첫 이슈는 SI/SM 회사에 신입으로 입사하면서 개발자로서의 첫 취직이 이루어졌다는 것이다. 초반에는 업무 환경과 새로운 문화에 적응하는 것이 가장 큰 도전이었고, 그 과정에서 인프라, 코드리뷰, 협업 도구 사용, 기능 개선 그리고 예상치 못한 버그 등을 직면하며 배운 것이 많은 해가 된 것 같다. 어려움도 많았지만, 그만큼 성장의..
[토이프로젝트] TS로 깃허브 README에 블로그 포스팅 자동 반영하기
토이프로젝트 선정 GitHub를 경험한 개발자들은 Readme에 자신을 표현하고 홍보하기 위해 글이나 이메일, 블로그 등을 작성한 경험이 있을 것이다. 과거 내 소개글에는 기술 스택과 개인 블로그, 배지 등 글자로 꾸미는 방법으로 소개글을 작성했었는데, 이렇게 추가하는 방식은 잘 보이지도 않고 url을 방문하도록 유도하는 데도 효과적이지 않다. 그래서 깃허브 프로필을 어떻게 효과적으로 꾸밀지 고민하던 중, 소개글에 최신 블로그에 대한 대표이미지, 제목, 설명, 날짜 등으로 시각화하는 것을 목표로 잡았고 특정 시간에 새 글이 올라왔을 때 자동으로 갱신해주는 프로젝트가 있으면 좋을 것이라고 생각했다. 그래서 요즘 개인적으로 다루고 있는 TS 스택을 활용하여 매일 특정 시간에 GitHub Actions가..
[협업프로젝트] Spring Data Elastic Search 설정 및 구현 회고 (1)
서론협업 프로젝트를 진행하면서 검색 기능을 구현하는 단계에 들어섰다. 내가 초기 설계 단계에서 설정했던 대로 사용자의 편의성을 높이기 위해 검색 기능과 사용자별 검색 기록을 볼 수 있는 기능을 제공하기로 했으며, 초기 Figma UI를 구현하여 검색 관련 API를 설계 및 구현했다.초기에는 DB의 LIKE 기능을 이용해 '%키워드%'로 검색하고 사용자별 검색 기록을 저장해 관리하는 방식으로 충분하다고 생각했다. 하지만 추가 요구사항으로 실시간 검색어 및 일일 가장 인기 있는 장소 순위(검색어) 구현이 언급되면서 상황이 달라졌다. 추가 요구사항을 고려해보니, 처음에 계획했던 MySQL의 LIKE 기능을 이용한 '%키워드%' 검색 방식으로는 한계가 있었다. LIKE는 전체 데이터를 시간대별로 조회하는 풀 ..
[Refactor] 리팩터링에 순서가 존재할까?
완성된 프로젝트나 작성된 코드를객체지향 프로그래밍을 적용해서 리팩터링 하려 한다. 리팩터링을 진행하려고 할 때, 어디서부터 시작하여 마무리해야 할까?특별한 순서나 규칙, 절차는 존재하지 않는 것 같다. 하지만 리팩터링도 단계별로 적용하는 것이,유지보수가 쉬운 형태로 만들어 나갈 수 있다고 생각한다. 단계별 프로그래밍, 작은 단위부터 기능을 구현한 경험을 바탕으로리팩터링을 하기 전 점진적 단계를 구성해 보자. 단계별 프로그래밍 경험 + 리팩터링 단계 설정1. 코드 이해먼저 코드베이스를 깊게 이해하고 어떤 부분이 수정되어야 하는지 파악해야 한다.요구사항을 정확히 준수한다.README를 재검토한다.정상적인 경우, 예외적인 상황 정리2. 테스트 추가코드베이스에 예외 테스트가 부족하다면, 리팩터링 하기 전에 적절..
[Java] EnumMap 정리
토이프로젝트를 진행하며 EnumMap을 사용하는 다른 코드들을 보았다.기존에 나는 Enum을 사용할 때,Enum 내부에 변수를 추가하는 방식으로 사용하였었지만Enum 타입을 Map 구조로 다루는 방식과 목적에 대해서 궁금해졌다.따라서 EnumMap 구조와 장점 사용하는 방식에 대해서 알아보려고 한다. EnumMap이란?Java에서 특정 Enum 타입의 키를 사용하는 맵이다. (HashMap과 유사)특히 Enum 상수를 효율적으로 다룰 수 있도록 최적화된 구현을 제공한다.특징과 성능의 장점을 알아보자.특징Enum 타입만 key로 사용 가능한 특별한 Map이다.해싱 과정이 필요 없어 HashMap보다 빠르다.null을 key로 넣는 경우 NullPointerException 발생EnumMap은 내부적으로 배..