
최근에 애드몹 설정을 한 앱을 앱스토어에 출시했다. 그 과정 중에 내가 찾아봐도 안 나왔거나 몰랐던 정보들이 있어서 이곳에 정리한다.미리보기는 테스트 화면으로 하지 말자 앱스토어에 앱을 검색하면 나오는 앱 사용 화면이 있다. 앱을 출시하려면 이걸 준비해야 하는데, 난 잘 몰라서 플러터로 실행하면 나오는 debug 리본이 노출되고, 애드몹 테스트 광고가 노출된 화면으로 캡처를 해서 제출했다. 결과는 반려. 스크린샷은 실제 사용하는 것처럼 보여야 한다고 한다. 그래서 debug 리본도 안 보이도록 처리하고, 애드몹 광고 영역도 가리고 스크린샷을 제출해서 심사 통과했다.애드몹 앱 등록을 위한 준비를 미리 하자 나도 그냥 앱에 애드몹 설정만 하면 되는 줄 알았는데, 알고보니 그게 아니라 앱스토어에 등록한 이후에..

서비스 오픈을 준비하면서 내가 가장 걱정했던 것인 AWS에 서버 구축하기를 마쳐서 그 과정을 정리해본다. 우선 구축하려는 아키텍처는 아래와 같았다.EC2 인스턴스 만들기 EC2 인스턴스를 만드는 과정은 다른 블로그에 잘 나와 있으므로 생략한다. 서버1을 먼저 인스턴스 생성으로 만든 후에 서버1을 이미지화하여 템플릿 생성 후 템플릿으로 인스턴스를 복제하여 서버2를 생성했다. 이때, 서버1을 접속하기 위한 .pem 파일을 함께 사용할 수 있었다. 만약 각 서버마다 다른 .pem 파일로 관리하기를 원한다면 새로 만들어주는 수 밖에 없는 듯하다.RDS로 Master-Slave 만들기RDS로 DB를 하나 만든 후, 그 DB를 선택하고 읽기 전용 복제본 생성을 선택한다. 이렇게 되면 Master로는 CRUD가 전부..
mysql에서는 아래 모두 같은 결과 지원select DATE_FORMAT(now(), '%Y-%m-%d') from dual;select DATE_FORMAT(now(), "%Y-%m-%d") from dual;근데 mariadb에서는 아래와 같은 결과select DATE_FORMAT(now(), '%Y-%m-%d') from dual; // 2024-07-04select DATE_FORMAT(now(), "%Y-%m-%d") from dual; // [42S22][1054] (conn=11683) Unknown column '%Y-%m-%d' in 'field list'
지난번 Lock 관련해서 문제 해결을 고민하면서 Redis를 사용한 방법도 고민하지 않은 것은 아니지만, Redis를 사용한다고 했을 때 구축하는 것도 비용이고 관리포인트가 하나 더 늘어나기 때문에 제외했었는데, 또 다른 문제가 발생했고, Redis를 사용하여 해결하면 참 쉬울 것 같은데 Redis를 정말 사용할지 고민이 된다. 이제 갓 오픈하는 서비스이니 우선 간단하게 시작하자는 마음으로 최대한 Redis를 안 쓰고 해결할 수 있는 방법을 찾는 게 맞는가, 아니면 Redis를 사용하면 간단하게 해결될 문제이니 사용하는 것이 맞는가.
문제길이가 n인 배열 nums에서 n/2번 이상 등장하는 숫자를 반환한다. n/2번 이상 등장하는 숫자는 반드시 존재한다고 가정하며, 아래 조건일 때 시간복잡도 O(n), 공간복잡도O(1)으로 해결해야 한다.n == nums.length1 -10^9 나의 접근법Boyer-Moore 과반수 투표 알고리즘을 사용했다.class Solution { public int majorityElement(int[] nums) { int count = 0; int candidate = 0; for (int num : nums) { if (count == 0) { candidate = num; } ..

내가 처음 모니터링 시스템에 대한 필요성을 느꼈던 건 2022년 4월쯤이다.(https://dakafakadev.tistory.com/154) 그 이후로 이것저것 모니터링 시스템을 찾아보았고, 듣고 있던 강의 내용 중에 Prometheus + Grafana를 잠시 알려주긴 했지만(https://dakafakadev.tistory.com/240) 실전에 사용은 못하고 있던 터에 이번 서비스 모니터링을 위해 드디어 사용해보게 되었다. 우선 프로메테우스와 그라파나를 내 로컬에서 도커로 띄워서 서버에서 설정한 내용으로 잘 돌아가는지 확인한 후 VM을 생성하여 연동했다. 진짜 너무 이상하다싶을 정도로 간단하게 설치 완료. 설치를 다 하고 팀원들과 팀장님께 이러한 게 있다고 보여드렸는데, 팀장님이 알고는 있었지만 ..
서비스 오픈을 위해 개발에 힘쓰던 중 동시성 문제를 해결해야할 상황이 왔다. 개발중인 서비스는 가계부인데, 거래가 입력되거나 수정되거나 삭제될 때마다 금액에 대한 업데이트를 정확하게 해줘야할 필요가 있었다. 그러나 고려해야 할 사항은 아래 두 가지가 있었다.첫번째, 서버의 스케일 아웃을 고려해야 한다.두번째, 서버 개발에는 최소의 비용이 들어야 한다. 첫번째 사항인 서버의 스케일 아웃을 고려하면 당연히 소스코드 내에서 처리하는 것은 불가능했고, 비관적 락, 낙관적 락, Named Lock, 혹은 분산 시스템을 사용하여 락을 구현하는 방법 등 여러 가지 방법이 있었는데 내가 선택한 방법은 Named Lock이었다. 비관적 락의 경우, 실제로 로우나 테이블 단위로 데이터에 락을 거는 방법인데, 충돌이 빈번하..