묵성이
지금까지 올라온 글들
-
재미있는 동시성 CS가 들어왔다!
재미있는 동시성 CS가 들어왔다!
2026.10.25예약 두 명이 들어왔다평화롭게 일하던 중 CS 하나 올라왔다. 같은 자리, 같은 시간에 예약이 두 건 잡혀 있다는 내용이었다.예약 전에 겹치는 예약이 있는지 검사하는 코드는 이미 있었다. 그런데 두 요청이 같은 순간에 들어오면 둘 다 "비어 있음"을 보고 예약을 넣었다. 검사를 통과한 뒤 기록하기까지 두 요청을 동시 막는 기능은 없었다.락을 거는 부분은 SQL 한 줄로 끝났다. 사실 마음만큼은 더 크게 과설계를 하고 싶었지만, 시간이 많지 않았고 서비스 규모도 그렇게 큰 서비스도 아니였기때문에 빠르게 개발하면서 막을 수 있는 방법을 찾아보았고 비관적 락을 사용하기로 결정했다. 개발과정에서 락 대기 시간을 어디에 걸지, 대기 초과가 어떤 예외 타입으로 도착하는지, 그리고 그 예외를 처리하려고 붙인 재시도 .. -
Rocky Linux 9.x 미러서버 변경하기
Rocky Linux 9.x 미러서버 변경하기
2024.10.26Rocky Linux 9.x 미러서버 변경하기rocky리눅스를 업데이트 하는 과정에서 자동으로 미러 사이트가 변경되면서 방화벽에 IP를 주기적으로 등록하고 수정하는 과정이 너무 불편해 국내 미러 사이트로 맘먹어서 변경하는 과정에서 복잡한 문제를 겪었습니다. 미러서버 직접 변경..?온라인에서 다양한 미러 사이트 변경 스크립트를 찾을 수 있었습니다. 그러나 최신 버전 Rocky 9.x에서 작동하는 스크립트가 없어 이것을 수동으로 추가하는 것을 생각했지만, 컨테이너 12개를 직접 다 수정하는 것은 너무 비효율적이라 직접 스크립트를 짜보았습니다. 미러서버 변경방법제가 Gist에 업로드 해두어 손쉽게 다들 사용할 수 있도록 하였습니다. 변경 가능한 미러는 현재 Navercloud와 Kaist 서버 두개를 지.. -
ONE STEP AWAY 관람후기
ONE STEP AWAY 관람후기
2024.08.08ONE STEP AWAY어느 날 크게 할 게 없어 주변에 뭐가 있을까 찾던 중 재미있는 사진 전시회를 하나 찾았습니다. 이경준의 사진전 원 스텝 어웨이 라는 뉴욕에서 사진을 찍고 도심 속에 있는 패턴을 보여주는 전시회라 해서 전시회에 다녀왔습니다. 《이경준 사진전: 원 스텝 어웨이》는 뉴욕 기반의 포토그래퍼 이경준의 렌즈에 비친 거대한 도심 속 패턴을 조명합니다. 석양에 빛나는 황금빛 빌딩 숲, 작열하는 햇살에 눈이 부신 초록빛의 공원, 그리고 그 안에 작은 사람들. 도시 곳곳을 담은 그의 작품을 바라보고 있으면, 어느새 그 속의 주인공이 되어있는 스스로를 발견하게 됩니다. 복잡하면서도 평화롭고, 익숙하면서도 낯선 그의 시선을 따라가보세요. 일정한 거리를 두고 바라본 우리 삶 속에서, 시야는 넓어지고, .. -
SOLID의 중요성과 아키텍처 설계
SOLID의 중요성과 아키텍처 설계
2024.07.18SOLID의 중요성과 레이어 설계작은 프로젝트에서는 크게 문제가 없었지만, 기능이 많아지고 비즈니스 로직이 많아 지면서 스파게티 코드가 생기기 시작하였습니다. 그래서 이러한 문제들을 해결하고자 멀티 모듈을 도입을 하면서 Layerd architecture를 도입하게 된 스토리를 풀어보려고 합니다. 설계를 진행하다 보면 문제들이 많이 생기는데 우아한형제들 기술 블로그에서 작성한 멀티모듈설계이야기 를 참고하면서 설계를 했습니다. 여러분들도 보시면 도움이 많이 될 거 같습니다. SOLID의 부재Spring을 공부하면 MVC 패턴에 대해서 배우게 됩니다. 저희 팀도 이를 기반으로 Controller, Service, Repository로 레이어를 구분하여 개발을 시작했습니다. 초기에는 기능이 한두 개 있을 때는.. -
패턴을 조합하여 코드를 줄이고 가독성을 개선하자!
패턴을 조합하여 코드를 줄이고 가독성을 개선하자!
2024.07.08중복되는 코드를 줄이고 가독성을 개선하자서버를 개발하면서 인트라넷 관련 정보를 호출하거나 데이터를 요청하고 처리하는 과정에서 비슷한코드들이 반복되는 경우가 많았습니다. 이러한 문제를 조금 해결해보기 위해 다양한 패턴을 적용해보았습니다. strategy 패턴을 이용하여 큰 틀을 만들자public interface ParserDocument { String getURL() ; default Document getDocument() throws IOException{ Connection connection = Jsoup.connect(getURL()) .timeout(1000 * 60) .header("Accept", "*/*") .header("Content-T.. -
Fragment간 데이터 전달 방법에 대해서..
Fragment간 데이터 전달 방법에 대해서..
2024.06.26Fragment간 데이터 전달 방법에 대해서..안드로이드를 개발하다 보면 서로 다른 Activity와 Fragment간 데이터를 주고 받아야하는 경우가 있습니다. 저는 대표적으로 상태 값이나 처리에 필요한 데이터들이 많았습니다. 기존에는 Bundle을 활용하여 데이터 값을 주고 받았습니다. Stirng 타입의 데이터를 하나 보낸다면 크게 문제는 없었지만, 2개 이상부터 이름다른 Key 값과 중복되는 코드가 증가되고 가독성이 떨어지는 문제가 있었습니다. 그래서 이를 개선하기 위해 다양한 시도를 해보았습니다. Fragment Result 테스트해보기사진과 같이 Fragment Manager에서 처리할 수 있어서 간단하다 생각하였습니다. 특히나 setFragmentResultListener 통해 다른 Frag..