Seonghyeon Cho

Seonghyeon Cho

Independent programmer.
구글 인증기(Google Authenticator)에서 다른 인증기로 마이그레이션하기
TOTP

구글 인증기(Google Authenticator)에서 다른 인증기로 마이그레이션하기

구글 인증기(Google Authenticator)는 OTP(One-Time Passcode, 일회용 인증코드) 앱 중 하나로, 먼 옛날부터 널리 사용된 앱이다. 먼 옛날엔.. 구글 인증기에 있는 OTP들을 옮길 수 없었다. 그래서 핸드폰을 바꾸면 모든 OTP를 다시 등록해야 하는 번거로움이 있었다. 그나마 최근에는 내보내기도 추가되고, 구글 계정에 백업도 된다. 구글 계정에 락인되는게 싫다거나, ente
4 min read
눈 이모지
RFC

Happy Eyeballs

Happy Eyeballs(해피 아이볼스, 행복한 눈알..?)는 듀얼스택 호스트에 더 빠른 커넥션을 선택하는 클라이언트 알고리즘이다. 요즘 대부분의 호스트는 듀얼스택(IPv4, IPv6)을 지원하는데, 웹 클라이언트 입장에서는 어떻게든 더 빠른 커넥션을 사용하고 싶을 것이다. 또한 네트워크 상태나 클라이언트에 따라 IPv4 또는 IPv6 하나만 사용 가능할 수도 있을 것이다. 그래서 IPv4, IPv6
2 min read
라프텔 댓글 숨기기 (ViolentMonkey)
라프텔

라프텔 댓글 숨기기 (ViolentMonkey)

애니 보는데 댓글이 자꾸 거슬려서 댓글을 숨기는 방법을 좀 찾아봤는데, 댓글 숨기기/끄기 기능은 앱에서만 지원된다고 한다. 그래서 그냥 유저스크립트(UserScript)를 짰다. 설치 방법 1) ViolentMonkey 설치 브라우저에서 UserScript를 돌릴 수 있도록 해주는 확장 프로그램을 설치해야 한다. 나는 ViolentMonkey(바이올런트 몽키)를 사용한다. TamperMonkey도 (아마도) 동작할거라 생각한다 아래는 브라우저별
4 min read
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