Light Blue Pointer
본문 바로가기

분류 전체보기307

IntelliJ에서 Git 계정 분리하여 여러개 사용하기 회사에서 사내망 프로젝트만 진행하다가 사외망 프로젝트를 진행하게 되어 외부망 깃 계정을 만들었다.문제는 내 맥북의 인텔리제이에서 개인 Git을 로그아웃하지 않고 두개를 동시에 쓰고 싶었다는 점이다.결론적으로 아래와 같이 하면 할 수 있다.1. 키 생성하기터미널에 다음을 입력한다.개인용 키ssh-keygen -t rsa -b 4096 -C "[personal_email@example.com]()" -f ~/.ssh/id_rsa_github_personal회사용 키ssh-keygen -t rsa -b 4096 -C "[work_email@example.com]()" -f ~/.ssh/id_rsa_github_work 2. 키 파일 확인하기터미널에 다음을 입력한다.ls -al ~/.ssh결과는 다음과 같이 나.. 2025. 10. 29.
DB서버 병목 장애 해결기: 5시간 배치를 5분으로 만들기 *보안을 준수하기 위해 각종 명칭은 모두 디저트 명으로 대체했다문제 상황맡은지 한 달이 된 서비스에서 daily batch 작업 실행 중 심각한 DB 서버 병목 현상이 발생해 서비스 장애로 이어졌다.증상특정 쿼리가 5시간 동안 실행되며 결과를 반환하지 않음후속 작업들이 대기 상태로 멈춰 batch 프로세스 전체가 중단해당 프로세스 이후의 데이터 처리 파이프라인 진행 모두 중단쿼리 자체는 기존과 동일했으나, 서버 재구축 이후 성능이 급격히 저하pid | usename | application_name | client_addr | duration | state | query_preview-------+------------+------------------.. 2025. 10. 26.
[Design Pattern]빌더 패턴 적용 회고: 희망편과 절망편 빌더 패턴(Builder Pattern) 적용 회고: 희망편과 절망편1. 빌더 패턴은 만능일까?복잡한 객체를 만들 때 자주 언급되는 빌더 패턴.하지만 이 패턴이 언제나 좋은 설계를 보장하지는 않는다는걸 프로젝트에 세번정도 빌더 패턴을 적용해보다가 깨달았다.실제로 내가 프로젝트에서 빌더 패턴, 특히 디렉터(Director)를 도입하면서 겪은 희망편과 절망편을 회고해보려고 한다.디렉터를 쓰는 게 좋았던 경우디렉터의 사용이 오히려 복잡도만 올렸던 경우2. 패턴 요약 및 배경빌더 패턴 구조 요약Builder: 제품의 각 부분 생성 인터페이스ConcreteBuilder: 구체적으로 제품 생성 방법 구현Director: Builder를 조합해 객체 생성 과정을 관리Product: 최종 결과물적용 배경공통되고 복잡한.. 2025. 5. 19.
[프로그래머스] 충돌위험 찾기 문제 주소https://school.programmers.co.kr/learn/courses/30/lessons/340211 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명문제 설명어떤 물류 센터는 로봇을 이용한 자동 운송 시스템을 운영합니다. 운송 시스템이 작동하는 규칙은 다음과 같습니다.물류 센터에는 (r, c)와 같이 2차원 좌표로 나타낼 수 있는 n개의 포인트가 존재합니다. 각 포인트는 1~n까지의 서로 다른 번호를 가집니다.로봇마다 정해진 운송 경로가 존재합니다. 운송 경로는 m개의 포인트로 구성되고 로봇은 첫 포인트에서 시작해 할당된 포인트를 순서대로 방문합니다.운송 시스템에 사용되.. 2025. 3. 13.
[Open Search] OpenSearch text/keyword 매핑 차이로 인한 검색 오류 해결기 스터디 일정이 있어서 일찍 퇴근한 나는 내가 개발한 로그 페이지에 결과가 출력되지 않는다는 과장님의 카톡을 받게 된다.다음날 아침 일찍부터 출근해서 문제를 파악해 보았다. 우리팀은 tts, stt, 대화엔진 등 여러 시스템을 거칠때마다 로그를 남긴다.각 서비스간 연동 로그를 OpenSearch에서 조회해서 유의미한 정보로 가공한 후 스프링으로 백엔드 api를 구현하고 리액트로 프론트단까지 구현하는게 내 업무였다. 분명히 정말 동일한 코드로 생성된 동일한 쿼리가 날아가는데왜 TB 환경에서는 되고 STG 환경에서는 되지 않는지 고민을 시작했다. OpenSearch dashboard의 dev tools를 켜고 쿼리가 왜 안 되는지 조건을 하나씩 빼면서 실행해보았다 ```GET project_name_log_*.. 2025. 2. 18.
@Slf4j = Facade 패턴 + Service Locator 패턴 나는 항상 로그를 찍을때 이렇게 Logger를 클래스 최상단에 생성한 후 이용해 왔는데Logger logger = Logger.getLogger(현재클래스.getName());팀원이 내가 로그를 찍는 방식을 보더니 @Slf4j를 추천해 주었다.그 후 직접 생성할 필요 없이 @Slf4j어노테이션만 달아주고 log.info , log.debug 등으로 바로 사용할 수 있어서 코드가 더 깔끔해지고 간편해졌다.사용하다가 문득 저 해괴한 알파벳의 조합이 무슨 의미일까 궁금해서 찾아보았다Slf4j : Simple Logging Facade for JavaFacade 패턴이란 ?복잡한 서브시스템들의 통합 인터페이스를 제공하는 구조적 디자인 패턴건물의 정면(facade)처럼, 내부의 복잡한 구조를 감추고 깔끔한 외관을.. 2025. 1. 25.
2024년 회고 2024년은 시야가 넓어지고 크게 성장하는 시간이었던 것 같다올해의 나는 운이 좋아서 성장할 수 있는 이벤트들이 많이 일어났고좋은 사람들을 정말 많이 만나게 되었고 철도 조금 들었고 인생의 방향성도 정하게 되었다개발자로써의 성장만 적고 싶었는데 그냥 두서없고 정말 긴 일기가 되고 말았다 일단 나에게 있었던 가장 큰 이벤트는 취업 준비를 하고 태어나서 처음으로 면접을 보러 다니고 실제로 취업을 한 것이다학부 졸업 이후 회피하며 손놓고있던 개발자 취업을 2월에 다시 시작했다계속 풀지 않고 있던 코테도 2월에 풀기 시작하고3월에 은행권 si 코테를 붙고 4월에 지금 회사 코테를 붙었다반년동안 외국계 기업,  스타트업, 대기업 si, 중소 si의 채용 프로세스를 모두 경험해 보면서 각 회사들의 특징과 장단점을 .. 2025. 1. 19.
Canada Uber 2024 Graduate 코테 후기 생각보다 쉬웠고.. 다 풀어서 면접이라도 불러줄 줄 알았더니 다 풀고 난 다음에 탈락 메일이 왔다서류를 코테 후에 보나...나중엔 꼭 가보고 싶다 2024. 12. 19.
웹소켓 Subscribe시에 Interceptor에서 채팅방 권한을 조회하도록 함 지난번에 이렇게 해서 웹소켓 연결을 했는데  Spring과 STOMP를 이용해서 웹소켓 연결하기Gradle에 필요한 설정 import // WebSocket implementation("org.springframework.boot:spring-boot-starter-websocket") implementation("com.fasterxml.jackson.core:jackson-databind") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implegreedydeveloper.tistory.com연결해두고 보니 아무나 특정 채팅방이나 서버를 Subscribe할 수 있는 구조라 보안 이슈가 있을 것 같았다 그래서 Intercep.. 2024. 11. 5.