전체 글 221

로그 남기기 2 - morgan 사용

로그를 남기기 위해 winston 사용 방법에 대해 정리한 이전 게시글을 보고 보는 것을 추천한다. https://jin-coder.tistory.com/140 winston은 배포 환경에서 로그 기록 파일에 저장하는 기능을 주로 하고, morgan은 개발이나 배포 환경에서 콘솔 로그 대신 자동으로 로그들을 보여줄 수 있게 한다. 그러기 때문에 morgan을 사용한 미들웨어를 통해 자동으로 로그를 만들고, winston을 이용해 그 로그를 파일에 기록하여 사용한다. 1. morgan 설치 npm install morgan 2. morgan 코드 작성 winston과 같은 위치인 ./config/morganMiddleware.js에 코드를 작성한다. morgan은 미들웨어로 만들어 사용할 것이다. wins..

coding/Node.js 2022.09.10

TIL 220908 - 깃헙 보안 이슈 ㅠ

오늘도 크게 해야 할 업무가 있는 게 아니라서 이것저것 찾아보면서 공부하고 나중에 해야 하는 작은 기능들을 만들어 보았다. 나중에 주요 기능으로 선택과 결정에 대한 명언을 보여주면서 자존감을 높여주고 살아가면서 좋은 글귀 명언들을 랜덤으로 보여주는 기능을 넣을 것 같아서 여러 명언들을 찾아서 리스트로 만드는 기초 작업을 했다. 나중에 사용할 때 바로 갖다가 사용할 수 있게 준비를 했고, 카카오톡 링크 공유하는 것도 찾아보았는데 이건 아마 프론트쪽에서 해야 하는 일들이 많은 것 같았다. 오후에는 팀원들의 코드를 같이 봐주면서 코드 공유도 했고, 중간에 깃 헙에 시크릿키를 올린 팀원이 있어서 커밋 히스토리를 지우는 해프닝도 있었는데 나중에 확인해보니 깃 헙 커밋 히스토리가 끊겨서 큰일이 날 뻔했는데 이것도 ..

일지/TIL 2022.09.09

로그 남기기 1 - winston 사용

코딩 공부를 하면서 로깅이라는 말을 많이 들었다. 백앤드 개발자는 로그를 가지고 유지 보수할 때 로그 기록을 보면서 보완해가면 좋다는 말을 많이 들어서 로깅에 관심이 많았다. 예를 들어 어떤 사람이, 어떤 이벤트, 어떤 데이터를 요청했는지, 어떤 동작을 하다가, 어떤 트랜잭션을 돌리다가, 어떤 에러가 났는지 로그가 남아있다면 그 부분을 중점적으로 보완해 가면 에러들을 잡을 수 있을 것이다. 그래서 실전 프로젝트를 진행하면서 winston과 morgan을 사용해서 로깅을 구현하였고, 분량이 많아 따로 정리해보겠다. winston winston은 개발 환경보다는 배포 환경에서 로그를 남기기 위해 사용한다. 개발환경에서는 콘솔 로그나 콘솔 에러를 통해 무슨 문제가 어디서 생겼는지 바로 알 수 있지만, 배포 환..

coding/Node.js 2022.09.09

TIL 220907

오늘은 비교적 여유가 있는 날이었다. 큰 기능들이 끝나고 어제 백앤드 분들과 해야 할 일을 나눠 가져서 오늘은 마이페이지를 구현하고, socket 통신을 https 환경에서 할 수 있게 코드를 조금 바꿔서 저장해 놓았다. 사실 큰 다른 점은 없고 서버를 열 때 http를 사용하던걸 https로 여는 것을 변수로 담아서 socket으로 보내주었더니 잘 되었다. 작은 기능들을 조금 수정하면서 코드 보완을 했고, 여러 자료들을 찾아보고 읽어보는 시간을 가졌다. 중요한 기능들은 얼추 구상을 해놓아서 프론트 분들은 지금 css 작업에 들어가서 내일도 아마 지금처럼 여러 자료를 찾아보고 적용할만한 기능들이 있으면 백에서만 할 수 있는 것들을 찾아서 해볼 생각이다. 아마 보안 쪽으로 생각하고 있다. 오늘 공부한 개념..

일지/TIL 2022.09.08

npm - "minor" / "23 packages are looking for funding" 에러

혼자서 로깅 작업을 구현해보고 배포 환경에서 어떻게 동작 하나 보기 위해 ec2에서 배포를 하였다. 근데 처음 보는 에러를 만났는데 가볍게 해결해서 글을 남겨본다. 먼저 폴더를 만들어주고, 깃 헙을 클론 해서 파일을 생성해주었다. 그 후 npm i을 하니 npm 버전이 맞지 않는다는 듯한 에러가 나왔다. 구글링을 통해 확인해보니 내가 생각했던 것과 비슷했다. 새로운 버전이 나와서 업데이트를 해주어야 한다고 한다. 해결방법 npm install -g npm // or sudo npm install -g npm 위 코드의 첫 번째 코드를 입력하면 npm이 npm을 설치하는 꼴이다 ㅋ 하지만 저렇게 설치를 하려고 하니 설치할 수 없다는 err가 나왔다. 해당 블로그엔 당황 말고 sudo를 붙여서 하면 된다고 ..

coding/Error 2022.09.08

TIL 220906

어제 사실상 실시간 채팅 기능을 다 구현해서 오늘은 기술 매니저님이 말씀하신 multer를 이용해서 S3에 파일을 서버에서 업로드하는 것을 공부했다. 프론트와 얘기하면서 서버도 비슷하게 동작하지 않을까 해서 전에는 어떤 식으로 진행했는지 물어보고 여러 글을 읽어보았다. 잘 정리되어있는 글을 기반으로 multer를 설치하고, 미들웨어로 만들어서 파일을 받아서 s3에 업로드를 했다. S3는 초반에 서버에서 할 줄 알고 만들어 둔 버켓을 활용했다. 파일 하나만 받아서 올리는 것을 성공했고, 프론트에서 여러 파일을 한 번에 줄지 아니면 각 인풋으로 받은 파일을 다르게 줄지 물어보고 합을 맞췄다. 일단은 파일을 배열에 담아서 줄 것 같다고 해서 나도 여러 파일을 받는 형식으로 구현을 했고, 이 또한 생각보단 쉽게..

일지/TIL 2022.09.07

socket.io - 실시간 채팅 / 채팅방 구현

프로젝트를 하면서 핵심기능 중 하나인 실시간 채팅, 채팅방을 구현해보았다. socket.io를 사용했고, 전에 알림이나, 소캣을 이용해 같은 페이지에 몇 명이 같이 보고 있는지를 보여주기 위해 소캣을 사용해 본 적은 있었다.(강의 내용) 하지만, 실시간 채팅은 한 번도 해본 적이 없었는데 생각보다 간단한 것 같다. 간단하게 소캣을 프론트와 백 둘 다 연결하고, 소캣 안에서 메시지를 주면 서버에서 받아서 모두에게 뿌려주면 끝이다. 말은 간단하지만, 적용이 정말 쉬운 건 아니다. 나 같은 경우 파일을 분리하는 곳에서 조금 애를 먹었고, 채팅방처럼 방에서 말한 건 방 사람들끼리 공유가 되어야 하고, 채팅 내용을 저장해서 잠깐 나갔다 들어와도 전에 나누었던 채팅들을 볼 수 있게 해야 했기 때문에 쉽지만은 않았다..

coding/Node.js 2022.09.07

TIL 220905 - 실시간 채팅이 된다!

실시간 채팅을 구현하기 위해 주말에 소캣 통신 코드를 짜 봤다. 사실 내 담당 파트가 아니었는데 실시간 채팅에서 시간을 많이 잡아먹으면 나중에 다른 기능들 구현이 힘들어질 것 같아서 나도 공부하는 마음으로 손을 댔었다. 혹시나 팀원들이 힘들어하거나, 같이 고민해야 하는 부분이 생겼는데 모르면 같이 코드를 바줄 수도 없을 것 같아서 혼자 공부해보자 라는 마음으로 시작했다. 먼저 socket.io가 무엇인지 찾아봤고, 여러 사람들이 간단한 채팅 기능을 구현한 것들을 보면서 코드를 눈에 익혔다. 점점 여러 기능들이 붙은 블로그 글도 찾아보았고, 전에 실시간 통신을 이용해서 채팅방을 만든 깃허브를 보면서 어떻게 로직이 짜였는지 봤다. 그 후엔 잘못되더라도 돌아갈 수 있게 test 브랜치를 하나 파서 혼자서 채팅..

일지/TIL 2022.09.06

소켓 / 웹소켓

소켓 프로그램이 네트워크에서 데이터를 주고받을 수 있도록 네트워크 환경에 연결할 수 있게 만들어진 연결부 프로토콜, IP, 주소, 포트넘버로 정의됨 일반적으로 TCP/IP 프로토콜을 이용 프로세스가 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써보내거나 소켓으로부터 데이터를 읽어들여야 함 통신의 흐름 서버 클라 소켓의 연결 요청을 대기하고, 연결 요청이 오면 클라 소켓을 생성하여 통신이 가능하게 함 1. socket() 함수를 이용하여 소켓을 생성 2. bund() 함수로 ip와 pot 번호를 설정 3. listen() 함수로 클라이언트 접은 요청에 수신 대기열을 만들어 몇개의 클라이언트를 대기 시킬지 결정 4. accept() 함수를 사용하여 클라의 연결을 기다림 클라이언트 실..

coding/Node.js 2022.09.05

WIL 220904

이번 주는 실전 프로젝트의 1주 차였다. 지난주 금토 동안 프로젝트 아이디어 회의를 하고 좀 더 세부적으로 기획으로 시간을 보냈다. api명세를 짜거나, 와이어 프레임을 만들어서 시각적으로 만들었고, 사실상 이번 주에는 기본적인 기능들을 구현하기 위해서 시간을 보냈다. 나는 또 게시물 쪽 CRUD를 맡았는데 다른 팀원들이 소셜 로그인과 소켓 통신을 혼자서 연습한 적이 있어서 프로젝트를 위해 그걸 실제로 구현할 수 있게 그 부분을 맡겼다. 프로젝트를 위해 해 본 사람이 빠르게 구현해서 지식과 코드를 구현하면 나도 나중에 시간이 남았을 때 그 코드를 보고 혼자 연습할 시간이 생길 것 같아서 역할을 그렇게 분배했다. 대신 게시물 CRUD라고 해서 아예 똑같이 구현한 건 아니다. 우리 프로젝트는 이번에 투표시스..

일지/WIL 2022.09.05