The Heartade Space

life as a continuous loop of building and breaking

TL; DR: Moes Zigbee 리모컨으로 SmartThings에서 에어컨을 조작할 수 있게 해 주는 IR 리모컨 드라이버를 만들었습니다. 여기에서 설치할 수 있어요.

먼 옛날, 갤럭시 홈미니라는 물건이 있었습니다. 빅스비가 탑재된 스피커인데, IR 블라스터가 내장되어 있어 어떤 에어컨이든지 스마트싱스와 빅스비로 조작할 수 있는 신비한 능력이 있었죠. 하지만 갤럭시 홈미니는 갤럭시 S20 시리즈의 한국 사전판매 사은품으로만 제공된 뒤 정식 출시되지 않았고, 후속작도 나오지 않은 채로 6년이 흘렀습니다.

더 읽어보기...

카카오의 은혜를 입어 쓰던 ChatGPT Pro 플랜이 끝난 뒤로 저는 Astra를 잠깐만 써도 1주일치 사용량이 날아가는 삶을 살고 있습니다. 토큰은 비싸고 사람은 저렴한 것이 오늘의 우리네 현실인 것입니다. 그러니 토큰 값을 아끼려면 사람이 머리를 더 써야 합니다.

그래서 오늘의 주제는, 토큰을 아주 조금 아끼는 방법 한 가지입니다.

더 읽어보기...

이런저런 기능들

최근에 달팽이 사육장에 웹캠을 달아서 펫캠으로 쓰는 방법에 대한 글을 올리면서 타임랩스 프로그램이 아쉽다는 언급을 했었죠. 그래서 직접 만들었습니다. 세계 최초 (아마도) 달팽이 타임랩스 프로그램, 메밀캠(Memilcam)을 소개합니다. 달팽이가 아니더라도 뭐든지 찍을 수 있죠.

더 읽어보기...

이삿짐을 싸고 있다. 이사를 갈 것이기 때문이다. 이사할 집은 정해지지 않았다. 하지만 일단 이삿짐을 싸면 세계가 나의 의지에 감응하여 이사를 성사시켜 줄 것이다.

더 읽어보기...

친구들이 블로그를 쓰길래 조금 의욕이 샘솟아서 저도 아무 말이나 써 보기로 했어요. 다시 꾸준히 쓸 거창한 결심 같은 건 없습니다. 그냥 지금 쓰고 싶은 김에 쓰고 깔끔하게 잊어버릴 거예요. 작심삼일이 되지 않는 가장 쉬운 방법은 작심을 하지 않는 거죠.

더 읽어보기...

표지 사진

오늘의 #뚝딱뚝딱 도 #NestJS 이야기입니다.

DB에서 사용자 정보를 가져와서 전송하는 API가 필요하다고 생각해 보세요. return await this.userRepository.findOne({where: {id: userId}}); 정도를 작성하고 커밋을 누르기만 하면 된다면 얼마나 좋을까요?

더 읽어보기...

표지 사진

AT 프로토콜 SDK를 사용할 때는 흔히 계정의 ID로 사용하는 핸들(Handle) 대신 DID(Decentralized Identifier)를 사용해야 할 때가 있습니다. 핸들을 변경하거나 다른 서비스 제공자로 이동하더라도 동일한 사용자를 참조할 방법이 필요하기 때문입니다. 파이썬 AT 프로토콜 SDK를 사용할 때 계정의 DID를 알아내는 스크립트를 간단히 메모해 둡니다. (제가 까먹을 예정이라 참고용으로 쓰는 거예요!)

더 읽어보기...

표지 사진

블루스카이 유저가 급증하면서 성인 포스트 위주의 계정들이 우후죽순 등장하기 시작했습니다. 블루스카이의 기본 모더레이션 시스템도 제법 잘 작동하고 있지만, 미디어만 가려 주기 때문에 성인 포스트의 글은 피드에 그대로 노출되는 문제가 발생하기 시작했습니다.

SNS 사용자가 성인 콘텐츠를 작성해서는 안 된다고 생각하지는 않지만, 예를 들어 공공장소에서 피드를 볼 때는 내용을 가려 놓을 수 있는 쪽이 서로에게 편리하지 않을까요? 그래서 대충 직접 해결해 보기로 했습니다.

더 읽어보기...

표지 사진

Postgres의 BIGSERIAL 타입을 Prisma로 가져오면 BigInt 타입이 됩니다. 이걸 #NestJS 컨트롤러에서 그대로 반환하면 이런 오류를 보게 되죠.

typeerror: do not know how to serialize a bigint

JSON.stringify() 함수에서 왠지 bigint 타입을 지원하지 않기 때문에 발생하는 문제라고 하는데, bigint를 반환하기 전에 string 같은 걸로 바꿔 주면 간단히 해결되겠지만 그렇다고 해서 bigint가 들어가는 모든 모델에 대해 타입 변환 함수 같은 걸 작성해 주기는 귀찮죠.

그런고로 오늘의 #뚝딱뚝딱 은 응답 DTO의 모든 bigint를 알아서 string으로 바꿔 주는 방법입니다. 더 나은 해결책이 있을 것 같기는 한데, 저는 이렇게 해결했어요.

더 읽어보기...

오늘의 #뚝딱뚝딱 은 아주 짧은 이야기입니다. curl https://pyenv.run | bash 로 pyenv를 설치했는데 오류가 출력되더라고요.

더 읽어보기...