본문 바로가기

Development

(47)
Development/기타 새로운 취미, npm 패키지 배포 과정 정리 들어가며 요즘 또 새로운 취미가 생겼다. 그건 바로, 정리. 여태 진행해왔던 여러 프로젝트의 코드를 주욱 살펴보면서 반복되는 코드를 어떻게 정리할까를 고민해왔다. 처음에는 GitHub Submodule로 관리해오다가(예전에 이와 관련한 글을 올린 적이 있음), 매번 프로젝트를 생성할 때마다 Submodule을 설정하려니 매우 귀찮음을 느꼈다. 그 귀찮음과 더불어 서브모듈의 코드를 수정해야하는 상황이 빈번하게 발생하니, 결국에는 서브모듈을 사용하지 않게 되었다. 이런 삽질을 계속 해오면서 다음과 같은 생각이 문득 들었다. 아, 그냥 나만의 BoilerPlate를 만들자. 여러 서브모듈을 하나의 프로젝트에 녹이기는 꽤나 머리 아픈 작업이었다. 처음에는 NestJS Monorepo로 BoilerPlate를 만..
Development/기타 NestJS ExecutionContext와 ArgumentsHost 들어가며 Docker로 ElasticSearch, Logstash, Kibana를 이것저것 설정하면서 놀다가 실제 로그를 쌓아줄 서버가 필요해서 바로 NestJS 프로젝트를 생성했다. GitHub/choewy/nestjs-logger-boilerplate 이것저것 설정을 변경해보며 구글링하면서 놀던 중에 StackOverflow에서 재미있는 질문을 보았다. NestJS의 Filter에서 host(ArgumentsHost)를 통해 핸들러 정보를 가져오는 방법에 대해 알려주세요. 약 1년 전, 필자가 실제로 겪었던 상황이었기에 자세한 내용을 안 보고도 질문자가 무엇을 원하고 있는지 충분히 짐작할 수 있었다. 해당 질문에 대한 답은 NestJS 공식 문서에 명확하게 기재되어 있었으며, 주말에 따로 시간내서 공..
Development/기타 MySQL 인덱스(Index) 개인 스터디 실습 및 정리 들어가며 요즘 백엔드 개발자의 필수 역량이자 꽃이라 불리우는 대용량 트래픽 처리에 관련한 공부를 하고 있다. 그 중 데이터베이스 인덱스에 관련한 내용을 공부하였고 직접 테스트해보며 정리한 내용을 작성하였다. 1. 인덱스란? 인덱스는 탐색 범위를 최소화할 수 있는 정렬된 자료구조이다. 먼저, 아래 주어진 숫자들 중에서 8을 찾아보자. [2, 5, 3, 1, 4, 7, 6] [1, 2, 3, 4, 5, 6, 7] 사실 위의 두 배열 중에서 8은 없다. 위의 두 배열 중에서 어느 배열이 8이 없다는 사실을 알기까지 더 짧은 시간이 걸리던가? 조금 더 자세한 예시를 살펴보자. 아래 학생들 중에서 수학 점수가 가장 낮은 학생의 이름를 찾아보자(현재 ID에만 인덱스가 적용되어 있다). ID 이름 국어 수학 영어 1..
Development/기타 MacOS(M1, M2) Docker를 활용한 팔월드(PalWorld) 서버 구축 방법 들어가며 지난 글에 이어 MacOS(M2)에서 Docker로 PalWorld 서버를 구축하는 내용을 정리해보았다. M1, M2 MacOS 뿐만 아니라 ARM Linux도 적용 가능할 것이라 생각한다. 만약, 본인의 Mac이 Intel Chip인 경우 본 글을 볼 필요가 없다. 누군가 벌써 Docker Hub에 Image를 올려놓았고, 해당 이미지를 그대로 활용하였다. DockerHub - nitrog0d/palworld-arm64 1. 사전 준비 Docker로 서버를 실행할 것이기에 당연히 Docker가 설치되어 있어야한다. 아래 링크에서 Docker Desktop for Mac with Apple silicon 버튼을 클릭하여 Docker Desktop을 설치한다. 팔월드의 최소 사양은 아래와 같으며,..
Development/기타 MacBook(M2)으로 팔월드 서버 구축하다가 작성한 CPU 종류와 아키텍처 들어가며 요즘 Steam에 Early Access로 출시된 팔월드(또는 팰월드, Palworld)가 핫한 게임인 듯하다. 디아블로4 출시 당시 game-porting-toolkit을 통해 MacBook(M2)에서 플레이한 기억을 떠올려 팔월드 또한 맥북에서 실행할 수 있지 않을까?라는 생각으로 여러 시도를 하였으나, 전부 수포가 되었다. 결국 오랫동안 잠자고 있던 다른 노트북을 꺼내 Windows 11로 업그레이드 하고 팔월드를 설치 후 플레이하였다. 주변에도 팔월드 플레이어가 하나둘씩 늘어가기 시작했고, 멀티 플레이를 하기 위해 팔월드 서버를 구축하고자 하였다. 맥북에서는 팔월드를 플레이할 수 없으니 맥북으로 팔월드 서버를 구축하고자 Docker Ubuntu22.04 이미지를 활용하여 다양한 시도를 하..
Development/Web R U Dead Yet? - RUDY Attack에 관한 궁금증을 풀어내다. 들어가며 오늘은 지난 글에서 언급했던 RUDY(R U Dead Yet?) 공격에 대해서 공부하고, 직접 실습해보면서 얻게된 정보를 정리하고자 한다. 1. DoS RUDY 공격 또한 DoS 공격 중 하나이므로 DoS에 대한 간단한 내용부터 알아보겠다. DoS는 Denial of Service의 약자로, 서비스 거부 공격이라는 의미이다. 이는 공격 대상 시스템 또는 서버에 과도한 부하를 발생시켜 다른 이들이 서비스를 이용하지 못하도록 방해하는 공격 기법이다. DoS 공격에는 여러 공격 기법이 있으며, 알아본 내용에 따르면 크게 두 가지 성격으로 분류할 수 있다. 1.1. DDoS 가장 잘 알려진 DDoS(Distributed Denial of Service, 분산 서비스 거부 공격)가 있다. 이는 서비스 중..
Development/기타 Tistory 본문 글 목차 자동 생성 기능 구현 들어가며 예전부터 해야지... 해야지... 했던 Tistory 목차 생성 기능을 구현했다. 기능 구현 난이도는 매우 쉬움이었으나, 귀차니즘 + 외주 프로젝트 개발로 인해 계속 미루어두고 있었다. 외주 프로젝트 개발이 잘 마무리되어 후기를 작성하다가 목차 생성 기능 구현이 번뜩 떠올라 구현 후 글을 작성하였다. 1. 개요 목차 생성 기능은 매우 간단하다. 해당 제목이 포함된 글 본문 태그를 찾아서 모든 제목 태그를 파싱한 후 새로운 목차 태그를 생성해서 넣어주기만 하면 되기 때문이다. Tistory를 포함한 대부분의 웹 페이지 본문 글에는 제목이 있으며, 이 제목은 주로 ~ 태그로 구성되어 있다. 이를 확인하려면 제목처럼 보이는 텍스트에 마우스를 올려놓고 우클릭하여 검사를 누르면 브라우저 개발자 도구에 해..
Development/회고록 백엔드 개발자, 첫 스타트업 퇴사일기 들어가며 11월 30일, 개발자로 커리어를 전향한 후 약 1년 3개월 동안 기여해왔던 회사에서 퇴사했다. 그간 많은 일이 있었고 하고픈 말 또한 많지만 삼키느라 애먹었다. 어디서부터 회포를 풀어가야 하는지 고민하면서 수차례 글을 쓰다가 지우고를 반복하는 과정을 통해 최대한 가지치기한 글을 남겨놓는다. 1. 서비스 소개 국내 후원 서비스에서 양대 산맥을 이루는 투네이션, 트윕을 뒤로하고 후발주자로 열심히 쫒고 있는 서비스이다. 회원가입자 수는 약 5만 명 정도이며, 일간 이용자는 약 150명 정도가 되는 작은 규모의 스타트업이다. 국내 후원 서비스의 낮은 수수료율, 한국이라는 작은 시장 규모를 탈피하기 위하여 올해 6월 말에 해외 서비스를 런칭했다. 해외 서비스 회원가입자 수는 약 2천 명이며, 일간 이용..
Development/기타 MySQL 8.0 Replication (2) - NestJS + TypeORM Multi Connection 들어가며 지난글에 이어서 이번에는 MySQL Replication을 통해 NestJS TypeORM에서 Multi Connection으로 관리하는 방법에 대해서 정리해보겠다. 1. 개요 실습 주제는 간단한 게시판 API 서버이며, 모듈 구조는 다음과 같다. classDiagram AppModule
Development/기타 Tistory에서 Markdown 작성 시 Mermaid 적용 시키는 방법 들어가며 필자는 주로 Markdown으로 글을 작성한다. 그러던 중 몇개월 전에 Mermaid라는 것을 알게 되었는데, 이를 티스토리에도 적용시키고자 한다. 1. 개요 Mermaid는 코드로 차트를 그릴 수 있도록 해주는 오픈소스이다. 공식 문서가 매우 친절하게 작성되어 있기에 Mermaid에 대해서 자세히 설명하진 않겠다. 관심 있다면 Mermaid 링크를 클릭해서 보시라. Markdown으로 코드를 작성할 때, 다음과 같이 mermaid라는 언어로 지정하면 차트를 그릴 수 있다. Markdown에서 작성한 mermaid 코드 ```mermaid pie title Pets adopted by volunteers "Dogs" : 386 "Cats" : 85 "Rats" : 15 ``` 위의 코드로 나타난..