분류 전체보기

항해99/필기노트

[필기노트] SQL, React 연동

-- GET /api/room/:postId 대화방 메시지 수신 API 1. 모든 메시지 출력 SELECT * FROM Messages; 2. postId에 해당하는 메시지 출력 SELECT * FROM Messages WHERE postId = 1; 3. postId에 해당하는 Channels에 참여중인 모든 유저의 userId를 출력 SELECT userId FROM Channels WHERE postId = 1; 4-1. userId가 해당하는 Channels에 참여중인지 확인 (COALESCE 사용) SELECT COALESCE(MIN('Y'), 'N') AS isUserId FROM Channels WHERE 4 IN (SELECT userId FROM Channels WHERE postId =..

항해99/TIL

2021-08-12 항해99 TIL

오늘 한일 대화방에서 유저가 회원탈퇴를 하지 않았는데 메시지가 출력되지 않는 오류가 발생하였습니다. API를 테스트하면서 발생하였던 것 같은데, DB 구조를 다시 살펴보면서 오류를 확인할 수 있었습니다. Messages 테이블과 연결되어있는 userId가 Users 테이블과 연결되어있는 것이 아니라 Channels 테이블에 연결이 되어있어 대화방을 나가면 메시지의 userId가 삭제되어 오류가 발생하였습니다. ALTER TABLE 명령어로 외래키 속성을 변경해 오류를 해결할 수 있었습니다. Joi 모듈에서 replace를 사용해 SQL Injection을 해결하였습니다. SQL Injection은 Sequelize Raw Query를 많이 사용하고 있는 실전 프로젝트의 코드 최적화 최우선 순위였던 문제점..

항해99/필기노트

[필기노트] MySQL 모임 초대 DB, SQL

$ npx sequelize model:generate --name Invites --attributes giveUserId:integer,receiveUserId:integer,postId:integer CREATE TABLE Invites( inviteId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, giveUserId int(11) NOT NULL, receiveUserId int(11) NOT NULL, postId int(11) NOT NULL, createdAt datetime NOT NULL DEFAULT NOW(), updatedAt datetime NOT NULL DEFAULT NOW(), FOREIGN KEY (giveUserId) REFERENCES..

항해99/TIL

2021-08-11 항해99 TIL

오늘 한일 하루 중 15시간을 쉬지 않고 프로그래밍을 진행한 것 같습니다. 배포가 다음 날 로 잡혀있었고, 그전까지 구현해야 하는 기능이 정해져 있다 보니 마음에 조바심이 났던 것 같습니다. 할 수 있는 모든 시간을 프로젝트에 진행하다 보니 목표로 하는 기능은 전부 구현하였고, Node.js 서버를 배포하고 테스트를 하였을 때 정상적으로 동작하는 것을 확인할 수 있었습니다. 즉석에서 어떤 API를 생성해야 하고, 그 API에서는 어떤 DB를 쓰는지, 어떤 임시 데이터가 들어가야 하고, 어떤 방식으로 SQL을 작성해야 하는지 등 즉석에서 많은 것을 만들었던 것 같습니다. 초대하기 기능은 이전 날에만 해도 아무런 기능이 구현되어 있지 않았지만, 하루 만에 모든 기능을 구현하였고, 추가로 Socket까지 연동..

항해99/필기노트

[필기노트] MySQL Geometry DataSet, Socket Middleware

MySQL Geometry DataSet POINT POINT 개념 POINT - 지도 상의 위도, 경도 값을 표현하는 객체 - MySQL의 Spatial Data Type - 포인트 값(한 쌍의 X, Y 좌표) - 경도 (Longitude) : X - 위도 (Latitute) : Y SRID (Spatial Reference Identifier) - SRS의 식별자 - GPS의 기준이 되는 WGS84 시스템의 SRID : 4326 - 단순 직교 좌표계의 SRID : 0 POINT 사용해보기 CREATE TABLE Points( pointId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, point POINT ); - POINT 형식이 포함된 테이블을 생성 INSERT ..

항해99/TIL

2021-08-10 항해99 TIL

오늘 한일 MySQL의 Geometry 데이터 셋 구현에 많은 시간을 할애하였습니다. 간단하게 위도, 경도를 Decimal로 구현할 수 있었지만, 그럴 경우 MySQL에서 제공하는 Geometry 함수들을 사용할 수 없고, 무식하게 구현하는 것 같아 Point 형식을 사용해서 구현하였습니다. Geometry 데이터 셋은 삽입과 조회할 때 함수를 사용해야 하는 것을 확인하였습니다. ST_X, ST_Y같이 별도의 함수를 적용하지 않고 조회할 경우 데이터가 깨진 상태로 출력되고, ST_GeomFromText 함수를 사용하지 않고 Geometry 데이터를 삽입할 경우 오류가 발생하는 것을 확인하였습니다. Socket에서 네임스페이스마다 미들웨어를 적용할 수 있는 것을 확인하였습니다. 보안성을 위해 인증된 유저만..

항해99/필기노트

[필기노트] HTTPS, 테스트코드 고려사항

-- HTTPS 적용 $ sudo apt-get install iptables - 다른 포트로 들어오는 지정한 포트로 전달하기 위한 iptables 라이브러리를 설치한다. $ sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 4001 - 80번 포트로 들어오는 클라이언트를 4001번 포트로 보냄 $ certbot certonly --webroot -w ./public -d astraios.shop - astaios.shop 도메인의 80번 포트가 열려있을 경우 인증을 받을 수 있다. - app.use(express.static('public')); 으로 public 폴더의 경로를 들어갈 수 있도록 설정한다...

항해99/TIL

2021-08-09 항해99 TIL

오늘 한일 오전 9시 ~ 오후 10시까지 13시간에 걸쳐 백 엔드 회의를 종료했습니다. API 문서 코드, 테스트 코드, HTTP 상태 코드 등 현재까지 작성한 코드를 다시 리뷰하면서 작성한 프로젝트가 정상적으로 동작하는지 확인하는 시간을 가졌습니다. 테스트 코드의 진행 상황을 공유받아 코드를 확인하였습니다. 작성된 코드는 실패에 대한 조건 1개, 성공 조건 1개씩으로만 구성된 단순한 코드였고, 실질적으로 활용할 수 없을 정도로 조건이 부족하였습니다. 그래서 코드 리뷰를 진행하면서 오류가 발생하는 모든 상황을 가정해 테스트 코드를 작성 하는 방법에 대해 공유하였습니다. API의 개수가 40가지가 넘다 보니 작성에는 많은 시간이 걸리겠지만, 안전한 프로젝트 진행을 위해 내일부터 업무 분배를 해야 할 것 같..

항해99/TIL

2021-08-08 항해99 TIL

오늘 한일 WIL 작성에 4시간 걸린 것 같습니다. 내용은 많이 없었지만 지나간 일주일을 되돌아보면서 문제점과 개선사항에 대해 생각하고, 그것을 글로 변환하려는 것에서 많은 시간을 쏟은 것 같습니다. 실전 프로젝트 4주 차에 들어서게 되는 다음 주부터는 겪었던 문제점들을 개선하고 더 좋은 방향으로 진행되도록 노력해야겠습니다. 오늘 배운 것 WIL 작성 일주일간의 재정비 내일 할 것 Swagger 코드 병합 Jest, Supertest 테스트 코드 병합 HTTPS 코드 병합 express API, Socket API 코드리뷰 MySQL 위치 데이터셋 정의 모임 구하기 Kakao Map 핀 서비스 Socket 데이터 구현

항해99/WIL

[항해99] WIL 9주차 - 실전 프로젝트 3주차 (후기)

서론 7/23 ~ 9/3의 실전 프로젝트가 진행 중입니다. Node.js 클론코딩 코드리뷰가 진행되었습니다. 디자이너 회의가 진행되었습니다. 디자인 와이어 프레임이 일부 구성되었습니다. 담당 매니저님과 이범규 대표님의 팀 면담이 진행되었습니다. 팀장 주간 회의가 진행되었습니다. 1:1 토요 멘토링이 진행되었습니다. 일정 7/23 (금) ~ 9/3 (금) : 실전 프로젝트 진행 8/03 (화) 19:00 ~ 21:00 : Node.js 클론코딩 코드리뷰 8/04 (수) 20:30 ~ 21:30 : 디자이너 회의 8/05 (목) 12:30 ~ 13:30 : 이범규 대표님 팀 면담 8/06 (금) 12:30 ~ 14:00 : 팀장 주간 회의 8/07 (토) 20:00 ~ 22:10 : 1:1 토요 멘토링 실전..

커스텀 리
'분류 전체보기' 카테고리의 글 목록 (12 Page)