항해99/필기노트

항해99/필기노트

[필기노트] MySQL Index

Index : 자료 내에서 특정 항목을 찾기 위한 메커니즘 - 인덱스는 일반적인 데이터 테이블과 달리 특정 순서로 유지되는 특수 테이블 - 모든 데이터를 포함하는 대신, 행이 실제로 존재하는 위치에 대한 정보와 함께 데이터 테이블에서 행을 찾을 때 필요한 열만 포함 - 인덱스의 역할 : 테이블의 모든 행을 확인할 필요 없이 테이블의 행과 열의 서브셋을 쉽게 검색하는 것 - 특정 테이블에서 행을 빨리 찾기 위해 사용된다. ☆ - 디스크 저장소에 얼마나 덜 접근하게 만드는지, 인덱스 Root에서 Leaf 까지 오고가는 횟수를 줄이는 것이 핵심 - 인덱스의 검색은 Root > Branch > Leaf > 디스크 저장소를 기준으로 검색한다. 고유 인덱스 : UNIQUE 속성 다중 열 인덱스 : 두 열을 함께 사..

항해99/필기노트

[필기노트] Redis-cli ZSET, MULTI EXEC Transaction

ZRANGEBYSCORE (v.1.0.5) ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] WITHSCORES : 요소와 Score를 모두 반환한다. (v.2.0) 시간복잡도 : O(log(N)+M) N : zSet의 요소 갯수 M : 반환되는 zSet 요소 갯수 M이 동일하다면 (LIMIT 설정) O(log(N))이 될 수 있다. ZRANGEBYSCORE geo:locationsExpire -INF +INF WITHSCORES result) '1' result) '3600' geo:locaitonsExpire 이름의 zSet의 모든 멤버와 Score를 조회한다. 1 멤버에 저장된 3600 Score를 출력한다. 만료 이벤트 만료 시간 설정: E..

항해99/필기노트

[필기노트] MySQL VIEW, API

-- GET /api/search/room 1. 모든 Posts를 출력 SELECT * FROM Posts; 2. Posts에서 해당하는 인자만 출력 SELECT postId, title, postImg, maxMember, startDate, endDate, place FROM Posts ; 3. currentMember 추가 SELECT p.postId, p.title, p.postImg, p.content, COUNT(c.userId) AS currentMember, p.maxMember, p.startDate, p.endDate, p.place FROM Posts AS p JOIN Channels AS c ON p.postId = c.postId GROUP BY c.postId ; 4. tag 추..

항해99/필기노트

[필기노트] MySQL Group_concat, Event Scheduler

-- GROUP CONCAT으로 Tags의 데이터를 가져오는 방법 1. 모든 Tags 출력 SELECT * FROM Tags; 2. postId를 지정해 Tags를 출력 SELECT * FROM Tags WHERE postId = 1; 3. postId를 기준으로 GROUP BY를 지정 SELECT postId FROM Tags WHERE postId = 1 GROUP BY postId; 4. GROUP_CONCAT으로 tag데이터 출력 SELECT GROUP_CONCAT(tag SEPARATOR ', ') FROM Tags WHERE postId = 1 GROUP BY postId; 5. GROUP_CONCAT에서 알파벳 오름차순으로 정렬하기 SELECT GROUP_CONCAT(tag ORDER BY ..

항해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/필기노트

[필기노트] 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/필기노트

[필기노트] 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/필기노트

[필기노트] 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/필기노트

[필기노트] Kakao Map API, MySQL DATE 검색 SQL

kakao.maps.Size(width, height) : 크기 정보를 담고 있는 사이즈 객체를 생성한다. kakao.maps.Point(x, y) : 화면 좌표 정보를 담고 있는 포인트 객체를 생성한다. kakao.maps.Marker() : 마커를 생성한다. kakao.maps.Marker().setMap() : Marker를 객체에 출력한다. kakao.maps.Marker().setPosition() : 위치로 Marker의 위치를 변경한다. - setMap()을 사용하지 않으면 포지션만 변경된체 지도에 존재하는 마커는 움직이지 않는다. kakao.maps.services.Status. - services 라이브러리의 응답 코드가 상수로 정의되어 있다. 종류 - OK : 검색 결과 있음 - ZER..

항해99/필기노트

[필기노트] Docker Network

도커 네트워크 - 도커는 각 컨테이너에 외부와의 네트워크를 제공하기 위해 컨테이너마다 가상 네트워크 인터페이스를 호스트에 생성 - 이 인터페이스의 이름은 veth로 시작한다. - veth 인터페이스는 직접 생성할 필요는 없으며 컨테이너가 생성될 때 도커 엔진이 자동으로 생성한다. - docker() 브리지 : 각 veth 인터페이스와 바인딩돼 호스트의 eth() 인터페이스와 이어주는 역할 - 도커 컨테이너 > (eth()) > (veth) > docker() > eth0 - eth0 인터페이스는 호스트의 veth라는 인터페이스와 연결됐으며 - veth 인터페이스는 docker() 브리지와 바인딩돼 외부와 통신할 수 있다. ex) brctl show docker0 : docker() 브리지에 veth이 실..

커스텀 리
'항해99/필기노트' 카테고리의 글 목록