전체 글

전체 글

    [discord.js] discord-hybrid-sharding을 이용해 효율적인 샤딩을 해보자!

    [discord.js] discord-hybrid-sharding을 이용해 효율적인 샤딩을 해보자!

    **이 글에서는 타입스크립트를 기준으로 설명합니다.** 서버 수가 많은 디스코드 봇에는 "샤딩"이 필요해요. 디스코드에서는 봇의 서버 수가 2000개가 넘어간다면 하나의 연결로 모두 처리할 수 없기 때문에 그 연결을 여러 개로 나누는데, 그걸 샤딩이라고 해요. discord.js에서는 자체적으로 샤드 샤드 매니저를 지원해요. 이 샤드 매니저는 샤드 하나당 하나의 프로세스(또는 워커)를 만들어서 샤딩을 해요(discord.js 문서 참고). 하지만 이렇게 샤드 하나당 프로세스 하나를 사용하면 사용하는 리소스의 양도 엄청나게 클 거에요. 그래서 하나의 프로세스(또는 워커)에서 정해놓은 개수만큼의 샤드를 실행하게 해주는 라이브러리가 바로 discord-hybrid-sharding입니다! 프로세스 하나가 프로세..

    PostgreSQL - case의 값을 where문에서 사용하기

    채팅 필터링 디스코드 봇을 만드는 중, 검열 규칙에서 자모 분리 설정을 추가해야 했다. 그래서 select문에서 case문을 이용해 자모 분리된 값을 따로 받아왔다. select el."separate", "id", "regex", "name", "ruleType", "ruleId", case "separate" when TRUE then 'ㅇㅏㄴㄴㅕㅇ' -- 분리된 텍스트 else '안녕' -- 원본 텍스트 end as "_Input" from "RuleElement" where ( ("ruleType" = 'Black' :: "RuleType" and "_Input" ~* "regex") or -- 블랙리스트 규칙 처리 ("ruleType" = 'White' :: "RuleType" and not "..