본문 바로가기

분류 전체보기26

Github Action으로 NPM 라이브러리 버전 관리하기 npm 라이브러리를 개발하던 도중 버전 관리에서 약간의 불편함을 느꼈다. 개발을 한 후 npm에 배포하기 위해 매번 package.json에 들어가 버전을 올려주어야 했기 때문이다. 단체로 작업하는 큰 라이브러리가 아니였기 때문에 이런 부분에는 신경을 덜 쓰고 싶었고, github action을 활용해 npm 버전을 배포할 때 자동으로 올려주게끔 하였다. NPM Access Token 발급 https://www.npmjs.com/ 에 들어가 로그인한 후 프로필은 누르면 아래에서 Access Tkoens이라는 탭을 찾을 수 있다. 들어가서 Classic Token으로 만들어주자. 만약 github package로 배포한다면 npm 말고 github에서 access token을 받아주자. 그럼 아래처럼 Ac.. 2023. 5. 26.
Prisma는 Type-Safety를 어떻게 보장하는가(Feat. VS TypeORM) 오늘은 Nest에서 ORM 라이브러리로 많이 거론되는 둘을 비교해보고자 한다. Nest를 공부하면서 공식문서에 많이 소개 되어있던 TypeORM(이하 타입오름)을 자연스럽게 사용하게 되었었지만, 이름이 무색하게도 TypeORM은 Typescript와 함께 사용할 때 종종 불편한 상황들을 많이 만들어냈던 것 같다. TypeORM이 무엇인지, 어떤 불편한 점이 있는지 간단히 살펴보고 그 대항마로 점점 유명해지고 있는 Prisma는 어떻게 이런 불편한 부분을 해결해 인기를 끌고 있는 것인지 간단하게 알아보도록 하자. ORM(Object Relational Mapping) 먼저 ORM이란 객체와 데이터베이스의 관계를 매핑해주는 도구이다. ORM을 사용하면 직접 쿼리를 작성하지 않기에 데이터베이스와의 연결이 느슨.. 2023. 4. 17.
NestJS - Decorator를 활용한 Discord봇 개발환경 개선 IT동아리 Mash-up에서 서버팀 사이드 프로젝트로 Nest를 사용해 Discord 봇을 만들고 있었습니다. 디스코드 봇에 내릴 수 있는 커맨드들을 정의하고 그에 대한 응답을 보내주는 로직을 작성하는데, 이런 커맨드 하나를 추가하기 위해 최소 4개의 파일을 수정해야하는 상황이였습니다. 아래는 각 파일의 수정이 필요한 부분들입니다. 1. 커맨드들에 대한 정보를 정의해야했습니다. 2. 각 커맨드들에 대한 응답을 매핑해서 리턴해주는 Factory Provider에서 각각의 Reply Provider 들을 주입받아 처리했어야했습니다. 3. Nest의 DI를 사용하기 위해 Module에 각 Reply Provider들을 넣어주어야 했습니다. 4. 각 응답에 대한 Reply Provider 파일을 작성해야했습니다.. 2023. 3. 16.
2022년 회고와 2023년 계획 처음으로 회고란 것을 작성해본다. 사실 회고란 것을 머리 속에서나 혼자 상상하듯 해봤지, 이렇게 글로 남기게 될 줄은 상상도 하지 못했다. 하지만 최근에 면접을 보다보니 내가 안다고 생각했던 것들이 아는 것이 아니였고, 부족함도 많이 느끼게 되었다. 더 발전하려면 지금 나 자신을 제대로 돌아보고 기록해야겠다는 생각이 들었다. 2022년 요약 올해 초의 일들이 잘 기억나지는 않지만, 뭔가를 많이 하려고는 했던 해인 것 같다. GraphQL나 메세지 큐등 지금까지 다뤄보지 못한 기술들을 공부하고 적용해보려고 책도 많이 읽으려했지만 회사와 동아리 등의 핑계로 모두 뒷전이 되어버리고 말았다. 그래도 가장 기억에 남은 건 동아리 스터디로 진행한 가상 면접 사례로 배우는 대규모 시스템 설계 기초 스터디였는데, 아직.. 2023. 1. 14.
리팩터링 2판 - 2장 리팩터링 원칙 2장의 내용은 정말 한 문장 하나하나가 많은 생각을 하게끔 해주고 인사이트를 주었다. 그렇다고 책 내용을 그대로 옮겨올 수도 없는 노릇이기에 이 글을 읽는 분들이 이 책에 흥미를 가지길 바라며 책의 내용과 내 생각을 간단히 정리하여 글로 남긴다. 2.1 리팩터링 정의 소프트웨어의 겉보기 동작(Observable behavior)은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 소프트웨어의 겉보기 동작은 그대로 유지한 채, 여러 가지 리팩터링 기법을 적용해서 소프트웨어를 재구성하다. 책에서 저자는 단순히 코드를 정리하는 작업이 리팩터링이 아니라 특정한 방식에 따라 작은 단계들을 거쳐 큰 변화를 만들어내는 코드의 수정이 리팩터링이라고 말한다. 이 단계들은 순차적.. 2022. 12. 28.
정적 분석 : 좋은 소프트웨어를 만들기 위한 노력의 과정 정적 분석(Static Analysis) 정적 분석이란 소스코드의 실제 실행 없이 소프트웨어를 분석하여 문제를 찾는 것을 말한다. 개발을 하는 우리 모두 소위 말하는 냄새 나는 코드(Code Smell)를 작성해본 경험이 있을 것이다. 우리는 다양한 이유로 냄새나는 코드를 만들어왔다. 아직 경험이 부족해서 코드의 냄새를 맡지 못해서일 수도 있고, 일정 등의 외부 요인으로 냄새를 맡았지만 참고 넘겼을 수도 있다. 문제는 소프트웨어를 지속적으로 발전시켜나가야하는 우리들, 혹은 회사의 입장에서 이는 고스란히 부채로 남아 자신이나 팀원들에게 돌아오게 된다는 것이다. 그렇다면 어떤 코드가 냄새나는 코드일까? 마틴 파울러 형님의 말씀에 따르면 코드 냄새는 문제 자체가 아니라 코드 어딘가에 문제가 있을 수 있다는 지.. 2022. 12. 24.