전체 글

    [NodeJs, Typescript] nodemailer 이메일 보내기

    한동안 블로그 글을 못썼다.. 원랜 진짜 작업했던 내용들만 올렸었는데, 최근엔 작업이 아니라 새로온 프론트, 백엔드 분들의 과제를 만들어주고, 온보딩을 도와주고 문서화를하는 일들이 전부였기 때문이다. 새로온 후임자들이랑은 친해져서, 아직까지 친하게 지내고 있다. 여튼 얼마전에 만든 메일 보내기를 기록한다. nodemailer.ts import nodemailer from 'nodemailer'; import MailCodeInterface from '../interface/mailCode.interface'; import 'dotenv/config'; const send = async (data: MailCodeInterface) => { const transporter = nodemailer.creat..

    [JavaScript] Queue

    기존에 Queue에 대해 shift, pop등 자바스크립트에선 배열로 구현해서 자주 가져왔는데, 알고리즘을 하다보니, Queue를 활용해야하는데, 자바스크립트에서 shift는 배열의 순서를 전부 재정렬해야하기 때문에, 시간복잡도가 O(n)이다. 데이터가 적으면 상관없겠지만, 큐의 자료구조를 시간복잡도에 맞게 활용하고 싶은 경우엔 O(1)이 나와야한다. 처음엔 {} 에 키밸류로 넣는 구조로 구현 했지만, 링크드리스트를 활용한 예제가 괜찮아서, 내가 쓸 것들로 만들어봤다. 알고보니 npm에 있었다. 아놔ㅠ class Node { constructor(data) { this.data = data; this.next = null; } } class Queue { constructor() { this.first ..

    [Nodejs, TypeScript] 도메인 로직 리팩토링

    운영하고 있는 배틀 서버의 구조를 바꾸고 싶었다. 일을 해보면서 느끼는건, 기획자나 QA를 하시는 분들과 노션이나 슬렉, 구두로 소통할 때, 'A라는 기능에 ~~을 했을 때 ~~한 문제가 생겼다' 이런 느낌으로 주고 받는게 많은데, 저런 워딩을 나나 혹은 다른 개발자들이 일할 때 '아아~ 특정 API에 문제가 있겠구나', 판단하고 작업을 들어가는 경우가 많았다. 여기서 기획자나 개발자나 모두 똑같은 용어로 소통하면 좋다는 다른 회사 개발팀의 이야기를 듣고, 나름 개선해보기로 했다.. 개선을 결정한 이유는 크게 2가지다. 1. 일단 나는 1인 개발을 쭉 해왔기에, 내가 다 만들어서 어디가 문제인지 찾아갈 수 있지만, 다른 개발자들과 협업하거나, 새로 들어올 내 후임자들이 이해하기 쉬운 구조가 좋을 것 같다..

    [Nodejs, GraphQL] Middleware(미들웨어) 만들기

    그래프큐엘에서 미들웨어를 쓰고 싶었다. 일단 jwt-token을 활용한 미들웨어를 만들어봤다. memberAuth.middleware.ts import memberService from '../service/member.service'; const memberAuthMiddleWare = async (authorization: string) => { const verifyJwtMemberAuth = await memberService.verifyJwtToken(authorization); const memberInfo = await memberService.getMemberInfo(Number(verifyJwtMemberAuth.memberIdx)); return memberInfo; }; export ..

    [NodeJs, GraphQL, Apollo, Express, Prisma, TypeScript] Setting

    GraphQL을 검색 서버에서 활용해보고 싶었다. 앱 내에 다양한 검색들이 있었는데, 검색 부분에서 restApi보단, endpoint를 동일하게하고, 프론트에서 원하는 데이터만 축출해가는 디자인 패턴이 더 효율적이라 생각했기 때문이다. 일단 프로젝트 배포전 임의로 셋팅 해봤다. app.ts import express from 'express'; import bodyParser from 'body-parser'; import cors from 'cors'; import apolloServer from './apollo/apolloserver'; import 'dotenv/config'; const main = async () => { const app = express(); app.use(express...

    [NestJs, Prisma] Prisma CRUD

    회사 내 특정 서비스들을 Nestjs + Prisma 로 바꾸고 싶었다. 기존 프로덕트는 모든게 생쿼리를 날리거나, 내가 직접 만든 orm을 사용했는데. 이게 처음엔 mysql이 뭔지도 모르는 초짜가 sql에 대해 학습하기 좋았지만, 점점 작업하면 할 수록 불편해졌다. 1. 내가 모든 컬럼을 외울 수도 없는 노릇 2. 모든 테이블을 혼자 만든 나도 이런데, 나말고 다른 백엔드 개발자가 보면 더 적응하기 힘들거라 생각 TypeORM과 Prisma중에 선택을 해야 했는데, Prisma를 선택했다. 추후 GraphQL을 사용할 건데, Prisma가 더 적합해 보였다. 단점은 AWS RDS Aurora에서 읽기 전용 DB를 지원하지 않는 다는 거였는데.. (prisma에 미들웨어처럼 넣어서 어거지로 할 수 있긴..

    스타트업 생존기

    국어를 가르치고, 옷이나 카드를 파는 일등 이런 저런 일을 할때 미래에 대해서 많이 상상해봤지만, IT회사에서 일하게 될 줄 상상도 못했었습니다. 스타트업에서 개발자로 산 후기를 기록한 글입니다. 저는 그동안 헬스케어 어플 '인아웃'을 개발했습니다. 결론부터 말하면 개발은 재밌습니다! 0 ~ 3개월회사에 처음 왔을 땐 아무것도 없었습니다..ㅠ 온보딩도, 개발자도, 제대로된 기획서부터 IT와 완전 거리가 먼 회사였습니다.. 모두가 가지 말라고 말렸지만, 재밌어보여서 도전했습니답.. 이 부분에 대해서 마지막에 말하겠습니다. 저런 문제들에 별 개의치 않았습니다. 오히려 도전하는 성향이 저랑 잘맞았어서.. 출근 첫날엔 앞으로 어떤 식으로 일할지 계획을 잡고, 제가 모르는 것이 무엇이고, 이걸 만들기 위해 예상되..

    [Nodejs] Slack Message 슬렉 메시지 보내기 slack-freinds

    slack을 업무 환경에서 주로 다루다보니까, 쓸 일이 많았다. api를 직접 사용하다가 여러가지로 귀찮아서 라이브러리 하나를 만들었다. slack-friends slack-friends slack-friends good. Latest version: 0.1.2, last published: 5 days ago. Start using slack-friends in your project by running `npm i slack-friends`. There are no other projects in the npm registry using slack-friends. www.npmjs.com 토큰 발급부터 자세한 설명이 있다. GitHub - ehdaydkv112/slack-friends: slack-f..