Seonghyeon Cho

Seonghyeon Cho

Independent programmer.
logstash

Logstash file input inode 재사용 문제 및 해결방법

Logstash의 File input plugin을 사용해 프로듀싱할 때, 이미 프로듀싱된 로그가 다시 프로듀싱되는 문제가 종종 발생했다. 아카이빙용으로 프로듀싱하는 경우, 같은 로그가 두번 프로듀싱 되더라도 큰 문제가 없다. 하지만, 긴밀하게 연결된 파이프라인에 멱등성이 보장되지 않는 액션이 다시 프로듀싱 된다면 문제가 발생할 것이다. 이 글에서는 해당 현상의 원인과 해결 방법을 알아보자. Logstash file
6 min read
docker

도커 크립토재킹 방지하기

로컬에서 테스트한다고 도커로 Redis 컨테이너를 띄워놨는데, 이상한 키가 들어있길래 monitor를 켜서 확인해보니, 실제로 외부에서 이런식으로 FLUSHALL + SET이 되었다. 보안팀에서 내 PC에서 의심스러운 IP와 통신이 발생한 이력이 있다고 연락이 왔는데, public IP가 부여된 PC에 패스워드 없이, 모든 호스트 대상으로 레디스 컨테이너가 떠 있는게 화근이었다. New Kiss-a-dog Cryptojacking Campaign Targets Docker and
2 min read
PyPI 패키징 및 배포 가이드
Python Featured

PyPI 패키징 및 배포 가이드

파이썬 패키지를 다른 개발자가 pip를 사용해 받아갈 수 있도록 pypi에 업로드 하는 과정을 패키징 및 배포라고 한다. 파이썬 패키지를 빌드하고 pypi에 배포하는 방법을 알아보자. 준비사항 * pypi.org에 가입하기 로컬 파이썬 패키징 Packaging Python Projects - Python Packaging User GuidePython Packaging User Guide 이번 글에서는 최대한 간단한 pure python 패키지를 빌드하는
6 min read
ghost 블로그에 giscus 댓글 추가하는 법
ghost

ghost 블로그에 giscus 댓글 추가하는 법

ghost는 기본적으로 멤버 전용 댓글 시스템만 있다. 그래서 disqus, giscus, utterrances 등 다른 댓글 서비스를 이용해야 ghost 멤버 시스템과 별개로 댓글을 달도록 할 수 있다. ghost 호스팅 서비스를 사용할 때 giscus를 이용해 템플릿 파일(post.hbs 등)을 수정하지 않고 댓글을 추가해보는 방법을 알아보자. giscus 소개 giscus는 깃허브 리파지토리의 디스커션(
3 min read
팰월드 데디케이티드 서버 오라클 클라우드 인스턴스 설치 방법
palworld Featured

팰월드 데디케이티드 서버 설치 방법 (오라클 클라우드)

오라클 클라우드에서 상시 무료 프리티어로 4코어 + 24GB ARM 서버를 제공해서 게임 서버를 무난하게 돌릴 수 있다 이번 글에서는 오라클 클라우드에서 팰월드(Palworld) 데디케이티드(dedicated, 전용) 멀티 서버를 여는 법을 알아본다 ✔️데디케이트 서버라고 부르는 사람이 많은데, 정확한 명칭은 데디케이티드(dedicated) 서버이다. 게임 이름도 팰월드로 불러주자 (팔월드 아님) 유의사항 리눅스, 도커 기초
9 min read
git

CHANGELOG 자동으로 생성하기 (git-cliff)

changelog는 프로젝트의 버전별 변경사항을 정리한 것이다. 이게 없다면 라이브러리나 프로그램 버전을 올릴 때 git diff를 직접 봐야 하는데 매우 불편하기 때문에 changelog를 잘 만들어놔야 한다. 직접 changelog를 작성하는 것은 번거로운데, git-cliff 등의 changelog 생성기를 이용해 자동으로 만들 수 있다. 이 글에서는 git-cliff를 이용해 changelog를 자동으로 만드는 방법을 알아보자 git-cliff * docs:
6 min read
여러대의 컴퓨터와 주변기기 그림
C++

[C++] 구조적 바인딩 (Structured Bindings)

Structured Bindings란? Structured bindings는 C++17에 도입된 기능이다. 이걸 한글로 바꾸면 ‘구조적 바인딩’ 정도가 될 것 같다. 비슷한 말로는 destructuring, unpack, decomposition 등이 있을 것 같다. 나는 언팩이란 단어가 제일 짧아 자주 사용한다. Binds the specified names to subobjects or elements of the initializer. – Structured binding declaration - cppreference structured
4 min read
하드디스크와 SSD 그림
linux

리눅스 마운트 된 디스크 ssd인지 hdd인지 확인 방법

리눅스 서버에 마운트 된 디스크가 ssd인지, hdd인지 확인해보자 kernel 2.6.29 이상인 경우 cat /sys/block/sda/queue/rotational 추가 패키지 설치 없이 확인할 수 있다. 1이면 하드디스크, 0이면 SSD다 디스크가 하드웨어에 의해 에뮬레이션 된 논리 장치인 경우(ex. RAID 컨트롤러) 작동하지 않을 수 있다고 한다. lsblk 사용 $ lsblk
1 min read

[VSCode] Copilot GitHub 계정 로그아웃 방법

GitHub Copilot(깃허브 코파일럿)을 사용하려면 깃헙 계정이 코파일럿 구독을 하고 있는 상태여야 한다 최근 회사계정으로 코파일럿 구독이 되어 개인 계정 구독을 끊었는데, 계정을 변경하려고 extension 설정을 찾아봤는데 없었다 찾아보니 왼쪽 아래 사람 모양 아이콘을 눌러 로그아웃을 해야 했다. 코파일럿 extension만 계정을 변경하는 기능은 현재는 없는 것 같다 Setting sync
1 min read
여러개의 모니터 앞에 앉아 있는 프로그래머의 뒷모습
linux

리눅스 Screen 사용법

GNU screen은 스크린 매니저로, 가상의 터미널을 생성하고 프로세스를 실행시킬 수 있다. 오래 걸리는 태스크를 원격 서버에서 실행할 때 중간에 커넥션이 끊기면 태스크도 종료되는데, screen을 사용하면 연결이 끊기더라도 원격 서버에서는 태스크가 계속 실행되고, 나중에 다시 연결할 수도 있다. screen 설치 대부분 리눅스 배포판에선 screen이 설치되어 있다. 맥에도 설치되어 있다. $ screen --version
3 min read
Prometheus Operator, Memcached
prometheus

Prometheus operator를 이용한 Memcached 지표 수집 예제

이번 글에서는 prometheus에 대해 가볍게 소개하고, Prometheus operator를 이용해 memcached의 지표를 수집하는 예제를 만들어보겠다. Prometheus 소개 프로메테우스(Prometheus)는 모니터링 시스템으로, 메트릭 정보를 주기적으로 수집해 시계열 DB(TSDB, TimeSeries DB)에 저장하고, PromQL(Query Language)을 이용한 시각화 및 추출을 지원한다. 기본 구성은 이렇게 생겼고, 기본적으로는 메트릭을 긁어가는(scraping) 방식으로
7 min read
jenkins

[Jenkins] ws-cleanup_{timestamp} 폴더 지우기

Jenkins(젠킨스) slave worker 용량이 부족해 Offline 상태가 되었는데, 확인해보니 ws-cleanup_{timestamp} 형식의 폴더가 계속 쌓여서 용량이 가득 찬 것이었다 Workspace Cleanup 이라는 플러그인을 쓰고 있는데, 과거 버전에 삭제가 제대로 안되는 버그가 있다고 한다 (비슷한 현상이 나타나는 유저의 질문글: https://stackoverflow.com/q/44364044/4295499) 일단 아래처럼 crontab을 추가하는 식으로
1 min read
종이비행기 날리는 로봇
telegram

텔레그램으로 공탐지수 봇 만들기

BotFather(https://t.me/botfather)를 이용해 텔레그램 봇을 쉽게 만들 수 있다. 공탐지수를 매일 메시지로 보내주는 봇을 만들어보자 BotFather 친구추가 및 봇 추가 만드는건 쉬우니 넘어간다. HTTP API 토큰은 유출되면 안되니 조심하자. bot api는 https://core.telegram.org/bots/api 여기서 확인할 수 있고, 이중에서 sendMessage를 이용해보자 # 기본 형식
4 min read
파피루스 문서
C++

doxygen 사용법, github pages로 배포하기

doxygen(독시즌)은 소스코드 주석으로 문서를 만드는 프로그램이다. 설정은 Doxyfile(독시파일)로 관리가 가능하며, 옵션이 다양하지만 이번 포스트에서는 기본 설정으로 C++ 프로젝트를 github actions을 이용해 github pages에 배포하는 것까지만 해보도록 하겠다. Doxygen 설치 및 설정 brew install doxygen 설정 추가와 테스트를 위해 로컬에 doxygen을 설치한다 # 문서 만들기 doxygen # Doxyfile 생성
4 min read
grep 사용 예시
linux

grep 사용법

grep은 파일에서 패턴에 맞는 라인을 출력하는 유틸리티다. 사용법 grep [OPTION...] PATTERNS [FILE...] grep [OPTION...] -e PATTERNS ... [FILE...] grep [OPTION...] -f PATTERN_FILE ... [FILE...] 기본적으로 정규표현식을 사용하며, 옵션에 따라 확장 정규식(Extended Regular Expression), 펄 호환 정규식(PCRE, Perl-Compatible Regular Expression) 등을 쓸 수 있다. grep을 쉘에서 사용할 때, 패턴은 일반적으로
11 min read
kubernetes

[k8s] kind metrics-server 설치

metrics-server는 HPA, VPA 등의 Autoscale을 위한 메트릭 수집 서버다. 각 노드의 kubelet을 이용해 node, pod의 CPU, memory 메트릭을 수집하며, 이를 kube-apiserver로 전달한다. kind로 만든 클러스터에 metrics-server를 helm으로 설치해보자. 간단한 설치 및 사용법은 이전 글을 참고하자 * https://blog.joe-brothers.com/macos-local-kubernetes-cluster-with-kind/ YAML manifest 또는 공식 helm chart로 설치할 수 있다 helm을
2 min read