오늘 한일 Socket 대화방에서 내 모임 리스트를 구현하였습니다. 구현에 어려움이 없었고 일관성 있는 프로젝트를 구성하기 위해 만들었습니다. 간단하게 Docker를 공부하였습니다. Docker에서 포트를 사용해 외부에 열어주는 방법, 상태를 확인하는 방법, 실행할 때 추가로 설정하는 방법 등 많은 것을 배웠습니다. 대략적인 개념을 이해하고 난 이후 Docker 스웜을 사용해 실전 프로젝트에 접목을 하고 싶습니다. AWS SES를 사용해 nodemailer 로 인증 메일을 보내는 테스트를 완료하였습니다. 도메인설정에서 CNAME, TXT 레코드를 구성해 SES에서 인증받는 데 많은 시간을 소모하였습니다. 그리고 신원 정책을 별도로 작성하는 부분에서 많은 오류가 있었고, 하루를 전부 쏟아부어 구현에 성공했..
오늘 한일 도커의 기본적인 사용 방법에 관해 공부하였습니다. 이미지 및 컨테이너의 개념과 공식 이미지 저장소의 사용 방법, 그리고 CLI 명령어로 도커를 제어할 수 있는 것을 배웠습니다. 일주일간의 재정비를 하였습니다. 감정적인 소모가 많았던 이번 일주일의 피로를 확실하게 풀었던 것 같습니다. 오늘 배운 것 WIL 작성 도커 / 쿠버네티스 내일 할 것 Socket 대화방 내 모임 리스트 구현 AWS SES 메일 서버 구현 CI CD 파이프라인
서론 7/23 ~ 9/3의 실전 프로젝트가 진행 중입니다. Kick-off 팀별 멘토링이 진행되었습니다. 팀장 주간 회의가 진행되었습니다. 기획을 수정하였습니다. 일정 7/23 (금) ~ 9/3 (금) : 실전 프로젝트 진행 7/28 (수) 17:00 ~ 17:30 : Kick-off 팀별 멘토링 7/29 (목) 20:30 ~ 23:00 : 디자이너 회의 7/30 (금) : 팀장 주간 회의 실전 프로젝트 2주 차 7/23 ~ 9/3 : 실전 프로젝트 기간이 진행 중입니다. 기획을 '모든' 주제에서 '운동'이라는 주제로 수정하였습니다. 디자이너 회의를 통해 Figma를 이용한 와이어 프레임이 작성되었습니다. 메인 테마 색상, 로고, 폰트가 선정되었습니다. MySQL ERD를 수정하였습니다. 카카오맵을 이용..
== pm2 $ pm2 -v - 설치한 pm2의 버전을 확인하는 명령어 $ pm2 start app.js - app.js 파일을 pm2에 등록해 실행 $ pm2 list - 실행중인 pm2의 목록을 출력한다. $ pm2 monit - 실행중인 pm2의 프로세스들을 실시간 모니터링 할 수 있도록 설정한다. $ pm2 show app - app 프로세스의 상세한 상태를 조회 $ pm2 restart app $ pm2 restart 0 - 프로세스이름이 app 또는 PID가 0일 경우 재시작한다. $ pm2 delete app $ pm2 delete 0 - 프로세스이름이 app 또는 PID가 0일 경우 삭제 및 종료한다. == Linux Bash 명령어 $ tail ~/.pm2/logs/app-out.log ..
오늘 한일 실전 프로젝트팀원들의 목표를 한번 되돌아보았습니다. 이번 주의 목표는 어떤 것을 잡았고, 그것을 어느 정도까지 구현에 성공하였는지, 한 주간 보낸 시간이 나태하지는 않았는지, 단순히 시간이 지나면 프로젝트가 종료될 것이라는 마음가짐을 가지고 있지 않은지 등 많은 이야기를 하였습니다. MySQL의 DB를 재정비하였습니다. TRIGGER가 빠지진 않았는지, 대화방을 구현하면서 부족한 부분이 있지는 않았는지, SQL이 비정상적으로 느리지 않았는지 등 고뇌의 시간을 가졌습니다. Socket 대화방을 구현했습니다. 간단하게 nunjucks 템플릿 언어를 사용해 대화방을 구현했고, 완벽하지는 않지만, Socket을 위한 별도의 API 문서를 작성해보았습니다. 다음 주 시간이 난다면 소켓에 대한 구성 방식..
오늘 한일 팀장 주간 회의가 진행되었습니다. 전반적인 프로젝트의 진행 상황, 다음 주의 할 일, 업무 현황 등 많은 이야기를 하였습니다. 저희 팀을 포함해 총 4분의 팀장님이 참여해주셨고, 저희 팀과 같이 대부분 기획 부분에서 많은 시간을 할애한 것 같습니다. 느리진 않지만, 느긋하게 프로젝트를 진행해야 할 것 같습니다. Socket으로 클라이언트의 정보를 받아와 모든 유저에게 배포하는 Socket 코드를 작성하였습니다. 아직 친구 목록, 일정 목록 등 많이 구현되어 있지 않지만 구현된 코드를 통해 프론트 엔드에서 테스트가 가능할 것 같습니다. Node.js에서 Express, Socket이 CORS가 별도로 적용되는 것을 확인하였습니다. Express에서 CORS를 적용하고 테스트를 했는데 클라이언트에..
-- API Socket 논리 구조 생각 1. 네이버 지도 페이지로 돌아왔을 때 Socket을 연결한다. 2. 연결한 클라이언트에게 자신의 친구 리스트, 동일한 일정에 등록되어있는 유저 리스트를 뿌려준다. 3. Server에서는 클라이언트의 실시간 위치를 취합해서 모든 유저에게 동일한 위치 데이터를 뿌려준다. 3.1 Socket 데이터 = {userId, lat, lng} 4. 클라이언트는 친구, 일정 리스트에서 userId를 구분해 표시할 아이콘을 지정한다. TODO 일정 데이터는 어떻게 뿌려줄 수 있을까? - 일정 데이터 (모일 장소) 는 처음 접속했을 때 한번만 뿌려줄 수 있도록 설정한다. - 나중에 유저수가 증가할 경우 지역별로 일정데이터를 관리할 수 있도록 설정한다. == Socket == So..
오늘 한일 디자이너분들과 회의를 진행하였습니다. 테마 색상지정, 메인 로고 아이콘 지정, 주제 선정, 업무분담 4가지로 진행되었지만, 제일 핵심적인 주제선정에서 전날 주제가 '러닝'으로 변경된 것에 대해 팀원들과 디자이너분들이 의문점이 있으셨고, 저 또한 간과한 것이 있었기에 다시 주제에 대해 고찰해보았고, 최종적으로 '운동'이라는 주제로 변경되었습니다. Socket 통신으로 대화방 구현 코드를 분석하고 있습니다. 이전에는 강의를 순서대로 따라가면서 예제를 확인하고, 코드를 분석해 전반적인 프로그램에 이해가 쉬웠지만, 단순히 동작하는 프로그램을 하나씩 분해하면서 습득하는 부분에서는 많은 시간이 걸리는 것 같습니다. 작성된 프로그램을 어떻게 분해해서 저희 프로젝트에 녹일 수 있을지 생각해봐야겠습니다. 카카..
-- 유저 정보 조회 (동일한 일정이 있을 경우) 2명의 userId가 존재한다. 1. 모든 유저를 출력한다. SELECT * FROM Users ; 2. 모든 구인 공고를 출력한다. SELECT * FROM Posts ; 3. 모든 채널을 출력한다. SELECT * FROM Channels ; 4. 해당하는 Channels에 모든 user를 출력한다. SELECT userId FROM Channels WHERE postId = 1; 5. 입력받은 userId가 있는 경우의 Channel만 출력해야한다. SELECT postId FROM Channels WHERE userId = 2; 6. 입력받은 userId가 있는 일정에 참여중인 userId를 출력한다. SELECT DISTINCT userId FR..
오늘 한일 기획 재정비를 하였습니다. 기존의 기획은 모든 주제를 포괄하는 실시간 위치 갱신 서비스였는데, 튜터님과의 면담으로 주제에서 타깃을 확실하게 할 수 있는 것이 부족하다 하였고, 모든 주제에서 '러닝'이라는 주제로 축소해서 개발하기로 하였습니다. API 문서의 작성을 중단하였습니다. 현재까지 작성된 API까지만 서버에 배포하였고, 다음 주까지 프론트 엔드에서 구현될 기능을 미리 전부 구현하였습니다. 일부 기능이 남아있기는 하지만, 이제부터 가장 막히는 기능이 어느 것인지 생각해보았고, 소켓 통신, 분산 관리 서비스 등이 남아있었기에 백 엔드에서 역할분담을 Socket GPS 처리, Socket 대화방 구현, Docker 분산 관리 서비스 총 3가지로 역할을 분담하였습니다. DB가 많이 수정되었습니..