Coding Groot
최근 데브옵스 및 인프라 글
-
Mac Sequoia - multipass timed out waiting for response 해결법
Mac Sequoia - multipass timed out waiting for response 해결법
2024.10.14Mac Sequoia부터 오류가 나기 시작한 multipass 고치기최신 MacOS 15 Sequoia 사용자 주목!최신 Mac OS 15 Sequoia를 사용하고 있으면 현재(24년 10월 기준) 최신 릴리즈인 1.14.0 버전은 문제가 있어서 사용하지 못합니다.multipass lauch를 해도 "timed out waiting for response"라고 뜨며 실패할 것이고 예전에 실행한 인스턴스의 State도 전부 unknown으로 뜰 겁니다.원인원래는 인스턴스들의 IP를 가져오기 위해서 /var/db/dhcpd_leases 파일을 읽을 때 문제가 발생한다고 합니다. 저는 실제로 열어보니 잘 열렸는데 예전에 생성한 인스턴스 정보랑 최근에 생성되며 오류난 인스턴스 정보의 길이부터가 차이나는 것을 확.. -
실리콘 Mac에서 Local K8S 구축하기 #K3S #Multipass
실리콘 Mac에서 Local K8S 구축하기 #K3S #Multipass
2024.10.14실습용 K8S 환경 구축선택지1. Minikube장점명령어 한방으로 addon을 깔거나 실습 환경이 초기화되는 것은 편했다.따로 환경 구축에 관해 신경 쓰지 않고 바로 기본적인 명령어나 개념을 익힐 수 있는 것도 큰 장점이다.단점미니큐브는 싱글 노드 클러스터라 아무래도 실제 환경과는 다르다 보니 완전한 실습이 어렵다.컨테이너로 실행되어서 별도로 포트-포워딩도 한번 더해야 해서 불편했다2. 무료 쿠버네티스웹상으로 접속해서 무료로 실습할 수 있는 사이트들이 있는데 너무 느리고 시간대를 잘 공략해야 접속할 수 있어서 포기했다.오늘의 글그래서 공부용이면 차라리 가상머신 instance 3개 띄우고 K3S로 경량 쿠버네티스를 구축해서 실습하고는 한다. 오늘은 이 방법을 공유해보고자 한다.K3S로 쿠버네티스를 띄워.. -
Redis 운용하기
Redis 운용하기
2024.08.19Redis 운용하기스터디에서 Redis를 영구 저장하도록 save 설정을 켜두면 사용한다면 겪게 될 문제들에 관한 얘기를 나눠보았다. 나눈 얘기에 대한 요약본이다.영구적으로 컴퓨터를 껐다 켜도 복원되도록 사용하면 주의해야 할 점이 몇 가지 있다.용어Redis간단하게 Redis는 in-memory, single thread, key-value database이다.in-memory이기에 디스크 저장하는 기능을 꺼두면 기본적으로 껐다켰을 때 올라간 메모리가 휘발되어 데이터가 비어있다.재시작해도 데이터가 유지가 됐다면 영구적으로 하드에 백업되고 있다는 말이다. (기본값)Save(snapshot을 생성)할 때 동작Redis에서 RDB(기본값), 혹은 AOF persistence를 켜두면 fork를 사용해서 백업을..
최근 프로그래밍 글
-
HTTP 1.1 - 같은 서버(도메인)에 관한 동시 연결 제한
HTTP 1.1 - 같은 서버(도메인)에 관한 동시 연결 제한
2024.09.12HTTP 1.1의 동시성예전에 HTTP 1.1은 같은 도메인에 관해서는 만들 수 있는 연결의 제한이 있어서 Domain Sharding을 해야 한다고 들은적이 있다.연결 제한으로 인해 느려질 수 있는 경우쉽게 이해하기 위해 다음과 같은 상황을 생각해보자. 내가 웹 페이지에 접속하며 매우 큰 리소스인 이미지 파일 A, B, C를 example.com 서버로부터 불러와야 한다고 해보자. 이미지는 다음과 같은 경로에 호스팅되어 있다.A.png: example.com/img/A.pngB.png: example.com/img/B.pngC.png: example.com/img/C.png이렇게 생긴 웹사이트일 것이다. Coding Groot의 Head-of-Line Blocking 실험! example.com으로부터.. -
최단 경로 문제 - 다익스트라 알고리즘
최단 경로 문제 - 다익스트라 알고리즘
2024.04.09최단 경로 문제 최단 경로 문제는 그래프 내의 두 정점(노드) 간의 가장 짧은 경로, 즉, 각 간선들의 가중치의 합이 최소가 되는 경로를 찾는 문제이다. 그래프의 형태에 따라 다양한 최단 경로 알고리즘이 존재한다. 이러한 알고리즘은 그래프의 크기, 가중치의 존재 유무 또는 음수 사이클의 존재 여부 등에 따라 다르게 사용한다. 대표적인 알고리즘 복습할 겸 대표적인 최단 경로 알고리즘을 찾아봤다. 다익스트라 알고리즘: 가중치가 음수가 아닐 때 사용될 수 있다. 다익스트라가 대학원생이던 시절 여자 친구와 함께 커피숍에 갔다가 20분 만에 고안한 알고리즘으로도 유명하다. 벨만-포드 알고리즘: 음수인 가중치를 처리할 수 있는 알고리즘이다. 음수 사이클을 탐지할 수 있는 것이 특징이다. 플로이드-워셜 알고리즘: 가.. -
CertBot 인증서가 만료가 되었다
CertBot 인증서가 만료가 되었다
2024.01.21문제의 상황 모도코라는 사이트의 API Server를 운영하고 있고 CertBot으로 무료 인증서를 Let's Encrypt로부터 받아와서 사용하고 있다. 무료 인증서는 갱신 기간이 90일밖에 되지 않기 때문에 CertBot으로 자동으로 renew되도록 cronjob을 등록해놓았다. 실제로 거의 1년 동안 신경 안 쓰고 잘 사용해왔다. 그런데 인증서가 만료되면서 사이트 로그인이 되지 않는다고 갑자기 문의가 들어왔다. 일단 API 서버가 사용중인 인증서를 보니 이전에 만료된 Let's Encrypt 인증서를 사용하고 있었다. 운영 환경 API Server를 관리하기 위해 PM2라는 Process Manager를 사용하고 있다. GitHub에 Code를 업데이트하면 GitHub Action으로 자동으로 AW.. -
Error installing cocoapods 해결 후, CocoaPods 업그레이드하는 법
Error installing cocoapods 해결 후, CocoaPods 업그레이드하는 법
2023.11.17최신 코코아팟(CocoaPods)으로 업그레이드하기 맥을 Sonama(14.1.1)로 업그레이드를 하고 XCode17에 대응하기 위해 코코아팟을 업그레이드하려 했습니다. 그런데 sudo gem install cocoapods을 했더니 다음과 같은 오류가 발생했습니다. Fetching cocoapods-downloader-2.0.gem Fetching cocoapods-core-1.14.2.gem Fetching cocoapods-1.14.2.gem ERROR: Error installing cocoapods: There are no versions of cocoapods-downloader (>= 2.0) compatible with your Ruby & RubyGems 원인 루비(Ruby) & 패키지 ..
최근 프로그래밍 언어 글
-
IntelliJ 자주 쓰는 단축키 모음
IntelliJ 자주 쓰는 단축키 모음
2024.10.23IntelliJ IDEA요즘 인텔리제이를 자주 쓰는데 자주 쓰거나 혹은 자주 활용하면 좋아보이는 단축키를 정리해보았습니다.읽을 때기능단축어함수 시그니처 보기cmd + PQuick Docs 보기F1선언 보기 (변수, 함수, ...)cmd + B구현 보기cmd + opt + BUsage 보기opt + F7다음 Error 보기F2Symbol로 이동cmd + opt + O편집용기능단축어New Lineshift + enterJoin Linectrl + shift + JSurround Withcmd + opt + TLast Edit Locationcmd + shift + backspaceCaret to ... (커서를 움직이는 법)기능단축어일치하는 bracectrl + MBlock 시작 / 끝ctrl + opt +.. -
Rye로 파이썬 프로젝트 세팅해보기!
Rye로 파이썬 프로젝트 세팅해보기!
2024.07.15어떤 언어로 프로젝트를 하다보면 언어 버전부터 시작해서 Dendency와 Package 관리는 뭐로 할 것인지? 가상환경은 어떤 것으로 관리할 것인지? 나중에 어떻게 패캐지를 배포할 것인지? 등을 고민해야 합니다. 파이썬도 마찬가지로 여러 도구들이 돌아다닙니다.주로 사용한 도구주로 저는 간단하게 제일 아무런 설치가 필요없는 pip와 venv로 프로젝트를 관리를 합니다. 그런데 이번에 팀원들과 FastAPI로 프로젝트를 하면서 운영체제별로 하위 버전에 대한 이슈가 몇 번 생겨서 pip freeze를 저장한 requirements.txt에 한계를 느꼈습니다. 말고도 venv에서 환경을 불러오는 방식과 요즘 많이 채택하여 쓰는 pyproject.toml로 관리하고 싶은 마음도 들어서 다른 것을 찾아보았습니다... -
[Java] 람다식과 익명 클래스
[Java] 람다식과 익명 클래스
2024.02.21람다식은 어디서 왔을까? 함수형 언어가 다시 주목받으며 자바도 함수형의 이점을 살리기 위한 여러 기능이 업데이트되었다. 특히 자바 8에서 소개된 람다식이 대표적인 예이다. 함수형에서는 여러 클래스나 값을 변경하고 상호작용을 구현하여 표현하지 않는다. 보통 코드를 보면 무엇을 하는지 한눈에 보이고 데이터나 이벤트 스트림이 처리되는 과정을 가독성 좋게 볼 수 있다. 이런 데이터나 스트림을 다루는 데에 있어서 작은 동작이나 일회성 작업에 이름을 붙일 필요가 없는 경우가 많다. 그럴 때 쓸 수 있는 것이 람다식 혹은 익명 함수이다. 클래스명 같은 이름이 없기 때문에 그저 하나의 람다식으로 쉽게 전달될 수 있기도 하다. 람다식과 익명 클래스 람다식, 익명 클래스 모두 이름이 없는 함수나 객체를 표현하기 위해 쓰인.. -
[Java] Annotation (feat. Reflection)
[Java] Annotation (feat. Reflection)
2024.02.19Annotation? Annotate는 어떤 문서에 간단한 설명이나 의견을 달아놓는 것을 뜻한다. "주석을 달다"라고 번역할 수 있다. 이런 추가 정보는 어떤 데이터를 설명하기 위한 데이터이며 우리는 것을 메타데이터라고 부른다. 어노테이션(Annotation)을 사용하는 이유 자바에서 어노테이션은 코드에 메타데이터(코드를 설명하는 추가적인 데이터)를 표현하기 위한 방법 중에 하나이다. 이런 메타데이터를 통해 프로그램은 추가적인 정보를 알 수 있고 그에 따라 여러가지 기능을 지원할 수 있다. 대표적으로 여러 프레임워크에서는 메타데이터와 리플렉션을 통해 런타임에 다양한 기능을 지원해주고는 한다. 우리는 몇 가지 어노테이션으로 의존성 주입, 트랜젝션 관리, 테스트 코드 등을 깔끔하게 구현할 수 있다. 단순히 ..