• 12시간제 대신 24시간제를 써야 하는 이유

    오전 10시 30분은 오전 11시 27분보다 이른 시각이다.
    오전 11시 27분은 오전 12시 18분보다 늦은 시각이다.

    Read on →

  • asyncio에서 multiprocessing 사용시 This event loop is already running 문제

    파이썬에서 asyncio를 사용하던 도중 multiprocessing.Process로 새 프로세스를 생성한 후 거기서 또 asyncio.run을 사용하면 RunetimeError: This event loop is already running이라는 에러가 뜰 때가 있다.
    그렇다고 get_running_eventloop을 사용해 보면, 돌고 있는 이벤트 루프가 없다고 뜨는 이상한 현상이 있다.

    Read on →

  • Nginx 디폴트 설정에 SSL 추가하기

    Nginx에 도메인을 여러 개 연결해 놓으면 사이트별로 설정파일을 만들기 마련이다. 각 도메인은 server_name kjwon15.net;과 같이 설정하게 되는데 설정하지 않은 도메인은 default 설정파일에 있는 server_name _;을 포함하는 서버 블록이 맡게 된다. 보통은 Welcome to nginx!를 보게 되지만 문제는 TLS 서버를 세팅했을 때다.

    Read on →

  • Steam 계정 보안의 문제점

    저번에도 한 번 그랬지만 오늘 또 스팀에서 이메일이 왔다. 로그인을 하려면 코드를 입력하라는 메일이다.
    이게 무슨 뜻이냐면 어딘가에 있는 누군가가 내 스팀 계정에 로그인을 시도해서 패스워드를 맞추는 데에 성공했고 이메일로 받은 코드만 입력하면 내 계정을 사용할 수 있는 상태라는 것이다. 2FA라고 불리는 이 기능 덕분에 난 내 계정을 살린 것 같지만 큰 문제점이 몇 개 있었다. 너무 막장이라서 블로그에 글을 적을 수밖에 없었다.

    Read on →

  • pyenv 등 사용시 gi 임포트 실패 고치기

    나는 pyenv를 사용해서 파이썬 글로벌 버전을 3.7.5로 사용하고 있다. 사실 버전은 중요하지 않은데 시스템에 설치 된 버전이 아니라면 ibus-setup 같은 명령을 사용할 때 gi라는 패키지를 찾을 수 없다는 ModuleNotFoundError: No module named 'gi' 에러가 뜬다. gi를 설치하면 되지 않느냐?라고 생각 할 수 있겠지만 gi는 기본 패키지이고 따로 어디서 설치를 해 올 수가 없다. 꼼수를 사용하면 기본 site-packages에서 복사를 하면 되겠지만 매우 번거롭다.

    Read on →

  • QT5 앱에서 ibus 한글 입력 고치기

    iBus를 사용하다보면 QT5 앱에서 한글 입력이 제대로 안 되는 경우가 대다수라고 하기도 좀 그렇고 그냥 100%다. 대표적으로 텔레그램 등이 있는데 가장 빠른 해결방법은 입력기를 fcitx 같은 걸로 바꾸는 거지만 입력기의 기능을 많이 활용하는 사람으로서는 입력기를 바꾸는 게 그렇게 쉬운 일은 아니다. 나는 임시로 QT 앱에서만 fcitx를 사용하도록 설정을 했었는데 이것도 좀 아니기 때문에 제대로 된 해결법을 나중에 고생하기 싫어 남겨 놓는다.

    Read on →

  • Postfix를 Mailgun에 연동하기

    Cron은 기본적으로 모든 stdout 출력을 사용자의 로컬 이메일로 전송하도록 되어 있다. MAILTO 설정을 이용해 외부 이메일로 받는 것을 적극 권장하는데 비해 이에 대한 세팅은 꽤나 복잡하다. FQDN이 없으면 거부하는 서버들도 많고, 특히 postfix 설정이 복잡한데 이걸 mailgun에 물려서 간단하게 쓰는 방법을 정리한다.
    (Mailgun 이외에 Sparkpost 등의 다른 서비스를 써도 되지만 SMTP 전송을 지원해야 한다.)

    Read on →

  • Fix restic full disk error with overlayfs

    Restic을 이용해 시스템 백업을 주기적으로 하고 있었다. 중복제거, 증분백업 등 장점이야 여러가지가 있는데 딱 하나가 문제였다. 백업 도중에 하드가 가득 차면 더이상 진행이 안 되는데 중간에 남겨진 파일은 삭제가 안 된다. 여기서 문제는 restic prune 명령을 하면 사용되지 않는 파일을 삭제해 주지만 구현 방식상 이 상황에선 쓰지 못한다는 것이다.

    Read on →

  • 마스토돈 오브젝트 스토리지를 Wasabi로 옮기기

    원래 마스토돈에 사용 할 오브젝트 스토리지를 로컬에서 Minio를 이용해 돌리고 있었는데 슬슬 용량이 부족해져서 S3 호환 서비스인 Wasabi를 써 보기로 했다. 하지만 이게 그냥 생각대로 되지 않고 삽질을 했기에 또 블로그에 글을 남긴다.
    전체적으로는 angristan의 글을 참고 했지만 안 되는 부분이 있기에 추가적으로 쓴다.

    Read on →

  • CORS는 대체 뭐 하는 놈일까?

    CORS(Cross Origin Resource Sharing)에 대해 모르거나 이게 어떻게 작동하는 건지 제대로 설명하는 글을 찾는 이들을 위한 글이다.

    Read on →