공유기 DDNS 설정으로 아이피 변경 대비하기 (ipTIME)

Intro 집에서 안쓰는 노트북에 우분투서버를 설치해 홈 서버로 운영한지 이제 2년이 넘어갑니다. 처음에는 클라우드에 비용을 투자하기에는 부담스럽고, 개발한걸 서버에 배포는 해보고 싶은 마음에 전기요금이 적게 드는 노트북으로 절충을 했는데, 필요에 맞춰 스토리지와 램도 증설을 하다보니 이제는 제법 쓸만 해 졌습니다. 무료 클라우드를 몇개 함께 사용하고는 있지만, 이처럼 넉넉한 메모리 및 저장공간에 그래픽카드까지 갖춘 고사양 컴퓨팅 환경을 약간의 전기요금만으로 사용할 수 있다는건 굉장한 이점이 있습니다. 하지만 홈 서버의 장점이 명확한 만큼 운영할때의 불편함 또한 여러가지가 있습니다. 그 중 가장 치명적인것 중 하나가 아마 유동 아이피 문제가 아닐까 생각됩니다. 오래전에는 가정용 인터넷은 IP주소가 자주 ..

Development/DevOps 2023.06.19
Grafana 모니터링중 이상 발생시 슬랙으로 알림 보내기

Intro Oracle Cloud는 1기가 메모리 인스턴스 무료로 제공한다. 그것도 무려 2개나. 몇년간 여러가지 클라우드 옵션들을 찾아봤지만 이정도로 파격적인 조건은 전혀 찾을 수 없었다. 그래서 그 두개의 인스턴스를 정말 요긴하게 잘 사용하고 있다. 고정 아이피도 제공해주기 때문에 토이프로젝트 정도는 물론이요, 트래픽이 많지 않다면 작은 서비스도 운영할 수 있을 것이다. 이정도 스펙이면 네이버 클라우드 기준으로도 월 3만원 이상 과금을 해야 하는데 공짜로 쓸 수 있으니 정말 좋다. 하지만 망각하고 있었던게 있으니, 그들의 이름은 악명높은 오라클 이였다. 난 이제 2년정도 사용했는데 여태 잠잠하더니 슬슬 점유율을 끌어 높이기 위해 썼던 그들 스스로의 묘책을 거둘 셈으로 보인다. 요즘따라 툭하면 이메일을..

Development/DevOps 2023.06.07
골치아픈 공공데이터포털 serviceKey 인코딩 문제

Intro 처음 겪는 일은 아니지만 공공 데이터 포털 API를 쓸 때마다 고생을 해서 이번에 글로 정리해두려고 한다. 공공 데이터포털은 각 공공기관이 보유하고 있는 여러가지 다양한 공공 데이터들을 하나의 통합 창구에서 편리하게 사용할 수 있도록 만들어진, 정부에서 운영하는 서비스다. 제공하는 정보가 정말 다양하고 여러가지 유용한 정보가 있으며 무료로 사용할 수 있기 때문에 개발자라면 한번쯤은 사용 해 보았을 것이다. 아래 보이는 것 처럼, 공공 데이터 포털에서는 개인 API 인증키를 Encode / Decode 된 두가지 버전으로 제공한다. 여기까지는 좋다. 사용자가 편의에 따라서 URI 인코딩 하지 않고 인코딩 된 키를 바로 복사해서 써도 되고, 그게 아니면 Decode 된 키를 가지고 각자 알아서 요..

Development/Daily Error 2023.05.28
Let's encrypt로 SSL 인증서 발급받기

Intro 기존에 ZeroSSL을 활용해서 SSL을 발급받았는데, 90일마다 제법 번거로운 과정을 통해 재발급을 하는건 그래도 견딜 수 있었지만, 다른 도메인 포함 총 3번의 90-Day Certificates 발급을 하고 나니 이제부터는 돈내고 인증서를 발급받으라고 한다. 앞으로 zeroSSL을 쓸 일은 없겠다. 다른 무료 인증서 발급 기관을 찾아보다보니 Let's Encrypt가 사용방법도 편하고 무엇보다 비영리 단체이기 때문에 앞서 경험했던 것과 비슷한 상황을 걱정할 필요도 없고 갱신 방법이 간단하다는 점에서 선택하게 되었다. 심지어 대부분의 문서가 한국어로 번역도 잘 되어 있기 때문에 누구나 손쉽게 사용할 수 있을거라 생각한다. 발급 https://letsencrypt.org/getting..

Development/DevOps 2023.05.20
2의 10000제곱을 MOD로 나눈 나머지 구하기

Intro Leetcode 1498번 문제 Number of Subsequences That Satisfy the Given Sum Condition를 풀이하는데, 처음에는 Brute force로 풀다 안되어서 슬라이딩 윈도우 방식으로 시도를 해 보았습니다. 그런데 속도를 개선하고 보니 다른 문제가 있었습니다. 조건에 따르면 최대 2의 10000 제곱까지도 계산을 해야 하는데, 이 크기가 만만치 않습니다. 2의 1만제곱이 얼마나 큰지 long타입은 커녕 double로도 담을 수 없습니다. Double.MAX_VALUE 를 확인 해 보면 2의 1023 제곱까지는 담기는데, 1024제곱부터는 담기지 않습니다. 코드를 작성해서 확인 해보면 아래 보이는 것 처럼, 범위 밖의 숫자는 Infinity로 나옵니다. ..

Development/Fundamentals 2023.05.06