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)를 생성하는 것도 좋은 방법이다. - 위키백과 배경현재 내가 일하고 있는 조직에서는 테스트 코드 작성을 하지 않는다. 이로 인해 코드 수정이나 기능을 추가해야 할 때 수동으로 테스트를 진행해야 했다. 작은 변경사항에도 전체 기능을 다시 테스트해야 하는 상황이 자주 발생했고, 이는..
Algorithms - 가중치 랜덤 알고리즘(랜덤 쿠폰 뽑기)
·
Algorithms
배경커머스 플랫폼 개발에서 랜덤 쿠폰 지급 이벤트는 빈번히 요구되는 기능이다. 이러한 이벤트에서는 일반적으로 할인율이 낮은 쿠폰일수록 당첨 확률이 높고, 할인율이 높은 쿠폰일수록 당첨 확률이 낮다. 이를 구현하기 위해 각 쿠폰에 가중치를 부여하고, 랜덤하게 쿠폰을 발행하는 가중치 랜덤 알고리즘(Weighted Random Algorithm)이 사용된다. 이번 포스트에서는 이 알고리즘을 알아보고 실제 구현, 테스트까지 진행해보자.  가중치 랜덤 알고리즘(Weighted Random Algorithm)가중치 랜덤 알고리즘은 각 요소에 가중치를 할당해서 선택 확률을 조절하여 선택하는 알고리즘이다.가중치가 높을수록 선택될 확률이 높고 가중치가 낮을수록 선택될 확률이 낮다. 사용 사례게임 개발: 디아블로 시리즈를..
Spring Boot - Service 단위 테스트하기(JUnit5, Mockito, AssertJ)
·
Spring
유닛 테스트(unit test)는 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차다.즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다.이를 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다.이상적으로, 각 테스트 케이스는 서로 분리되어야 한다. 이를위해 가짜 객체(Mock object)를 생성하는 것도 좋은 방법이다. - 위키백과 배경현재 내가 일하고 있는 조직에서는 테스트 코드 작성을 하지 않는다. 이로 인해 코드 수정이나 기능을 추가해야 할 때 수동으로 테스트를 진행해야 했다. 작은 변경사항에도 전체 기능을 다시 테스트해야 하는 상황이 자주 발생했고, 이는..
Cold Bean
'분류 전체보기' 카테고리의 글 목록 (2 Page)