Java - 유틸리티 클래스(Utility Class) Best Practice
·
Java
본 글은 아래 링크의 포스트를 번역한 내용입니다. Best Practices for Creating Utility Classes in Software DevelopmentIntroductionmedium.com 개요애플리케이션을 개발할 때 유틸리티 클래스를 많이 사용한다. 유틸리티 클래스는 애플리케이션 개발에서 공통으로 사용되는 기능을 제공한다. 개발자마다 유틸리티 클래스를 만드는 방법과 접근 방식이 크게 다를 수 있다. 본 글에서는 유틸리티 클래스를 만드는 Best Practice에 대해 알아보자 유틸리티 클래스란?유틸리티 클래스는 애플리케이션 전반에서 공통으로 사용되는 기능을 제공해주는 특수한 클래스이다. 유틸리티 클래스에는 다른 클래스들과 구별되는 몇 가지 특징이 있다.불변성과 무상태성 : 내부 상..
IntelliJ - Command line is too long 원인과 해결 방법
·
나의 에러 일지
배경집에서 작업하던 프로젝트를 맥북으로 가져와 작업을 진행했는데, 애플리케이션을 실행하는 과정에서 Command line is too long에러가 발생했다.원인과 해결 방법에 대해 알아보자 개발 환경Java 17Spring Boot 3.4.xGraldeIntelliJ 2024.1.4 (Ultimate Edition)MacOS(M1) Sequoia 15.3.1 원인Command line is too long 에러는 클래스 경로가 너무 길거나 JVM argument가 너무 많을 때 발생한다.대부분의 OS에는 명령어의 문자 수가 제한되어 있다고 한다. 해결 방법1. [메뉴 Run > Edit Configurations 선택] 2. [Modify options > Shorten command line 체크] ..
Flutter - MacOS(M1) Flutter 설치하기(+ IntelliJ에서 실행해보기)
·
Flutter
배경사이드 프로젝트로 아이폰 앱을 출시해보기로 했다. 언어는 Flutter를 사용하기로 했다. 나느 백엔드를 담당하기 때문에 Java를 사용하지만, 암호화 방식 중 E2EE(종단간) 암호화를 적용하기로 했기 때문에 Flutter를 통해 암호화 과정을 구현해 볼 생각이다.Flutter를 한 번도 사용해보지 않았기 때문에 설치를 해보자. 본 글에서는 MacOS(M1)에서 Flutter를 설치하고 IntelliJ로 실행하는 과정을 다룬다. 환경MacOS(M1) SequoiaIntelliJ Ultimate Edition 2024.1.4 요구사항MacOS에서 Flutter를 설치하기 위한 요구사항이다.RequirementMinimumRecommendedCPU Cores48Memory in GB816Display ..
프로그래머스 - SQL 고득점 Kit 완료
·
etc
오랫동안 미뤄왔던 SQL 고득점 Kit를 드디어 모두 클리어했다! 🎉확실히 실무에서 SQL을 다루면서 SQL에 대한 이해도가 크게 향상되었다는게 체감된다.다음 목표는 부족했던 알고리즘 고득점 Kit 클리어다. 꾸준히 학습해서 알고리즘 실력도 SQL만큼 향상시켜야겠다. 화이팅! 💪
Oracle - 인덱스를 사용하지 않는 쿼리
·
SQL
배경오라클에서 인덱스를 사용하더라도 인덱스를 사용하지 않는 쿼리가 있다. 현재 프로젝트의 레거시 코드도 확인해보면, 쿼리가 비효율적으로 작성되어 성능 문제가 발생하는 경우가 많았다. 오라클 쿼리를 작성할 때나 쿼리 튜닝할 때 알아두면 좋을 것 같아 정리해본다. 개발 환경Oracle 11gDBeaver 복합 인덱스복합 인덱스의 선행 컬럼을 WHERE 절에서 사용하지 않으면 인덱스가 무시된다.WHERE 절에 사용된 컬럼이 복합 인덱스의 선행 컬럼이 아니라면 INDEX SKIP SCAN과 같은 특수한 상황을 제외하고는 FULL SCAN을 사용한다. 그렇기 때문에 복합 인덱스를 생성할 때 WHERE 절에 자주 포함되는 컬럼을 선행 컬럼으로 두는 것이 좋다.INDEX SKIP SCAN은 복합 인덱스의 선행 컬럼이..
Oracle - 실행 계획으로 복잡한 쿼리 최적화해보기
·
SQL
배경백오피스를 운영하면서 항상 거슬렸던 부분이 있었다. 바로 느리게 로딩되는 주문 관리 페이지다. 원인은 굉장히 오래 걸리는 주문 목록 조회 쿼리였다. 주문 관리 페이지는 고객의 주문 정보, 배송 현황 등 다양하고 복잡한 데이터를 실시간으로 처리하고 표시해야 하는 중요한 화면이다. MD들은 업무 특성상 하루에도 수차례 이 페이지에 접속해야 하는데, 긴 로딩 시간을 감내해야 하는 상황이었다. 이는 단순히 개인의 불편함을 넘어서 전체적인 업무 효율성 저하로 이어질 수 있었다.(라고 생각한다.)그래서 팀에 건의하여 쿼리를 최적화해보기로 했다. 개발 환경Oracle11gDBeaver (Community Edition 24.1) 쿼리 구조쿼리 최적화를 할 때 가장 중요한 건 최적화하려는 쿼리의 역할과 기능을 아는..
IntelliJ - Git Log 화면이 안나올 때 원인과 해결 방법
·
나의 에러 일지
배경IntelliJ에서 커밋 히스토리 확인을 위해 Git Log 화면을 열었는데 빈 화면으로 나왔다.빨리 해결해보자 개발 환경IntelliJ IDEA 2024.1.4 (Ultimate Edition)MacOS (Monterey) 원인JetBrains Support 쪽 질문에 비슷한 현상에 대한 글이 있었고 거기에 담당자가 남긴 답변에서 이러한 현상이 발생할 수 있는 두 가지 원인에 대해 언급하고 있다.Git Log, Branch 등이 전혀 보이지 않는 경우 VCS.xml 파일이 없거나 잘못된 리포지토리를 가리키고 있을 수 있다.(VCS.xml에는 GUI를 사용하여 버전 관리 작업을 수행할 수 있도록 프로젝트의 VCS에 대한 정보가 저장되어 있다.)Git Log만 보이지 않는 경우 특정 분기점에서 인덱싱이..
리팩토링(Refactoring) - 랜덤 쿠폰 뽑기 성능 개선하기
·
Refactoring
배경새해 기념 랜덤 쿠폰 이벤트 페이지를 개발하면서 기존 랜덤 쿠폰 발급 성능을 개선했던 과정을 정리해본다.가중치 기반 랜덤 알고리즘은 다음 글에서 정리했으니 궁금하다면 참고 바란다. Algorithms - 가중치 랜덤 알고리즘(랜덤 쿠폰 뽑기)배경커머스 플랫폼 개발에서 랜덤 쿠폰 지급 이벤트는 빈번히 요구되는 기능이다. 이러한 이벤트에서는 일반적으로 할인율이 낮은 쿠폰일수록 당첨 확률이 높고, 할인율이 높은 쿠폰일수록 당green-bin.tistory.com 개발 환경Java 8SpringIntelliJ 기존 로직기존 랜덤 쿠폰 발급 로직 흐름을 살펴보자가중치 배열을 순회하며 누적 합(runningTotal)을 계산각 누적 합을 리스트(totals)에 추가 총 누적 합 범위 내에서 랜덤 값(rando..
Spring - Spring Boot 3.x에서 View 렌더링되지 않는 원인과 해결 방법
·
Spring
배경Spring Boot 3로 프로젝트를 개발하던 중 에러가 발생했다. 간단한 웹 페이지를 JSP로 구현하고 있었는데, 페이지를 열어보니 JSP 화면 대신 Whitelabel Error Page가 나타났다. 컨트롤러에서 main이라는 뷰 이름을 반환했고, 해당 JSP파일도 정확한 위치에 있었다. 그런데 왜 Spring Boot는 JSP를 찾지 못하고 Whitelabel Error Page를 표시하는걸까? build.gradledependencies { ... // JSP implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl'..
Spring Boot - Repository 단위 테스트하기(JPA, Querydsl, Mybatis)
·
Spring
유닛 테스트(unit test)는 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차다.즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다.이를 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다.이상적으로, 각 테스트 케이스는 서로 분리되어야 한다. 이를위해 가짜 객체(Mock object)를 생성하는 것도 좋은 방법이다. - 위키백과 배경현재 내가 일하고 있는 조직에서는 테스트 코드 작성을 하지 않는다. 이로 인해 코드 수정이나 기능을 추가해야 할 때 수동으로 테스트를 진행해야 했다. 작은 변경사항에도 전체 기능을 다시 테스트해야 하는 상황이 자주 발생했고, 이는..
Cold Bean
'분류 전체보기' 카테고리의 글 목록