도커 볼륨 - 컨테이너를 삭제하면 컨테이너 계층에 저장돼있던 데이터베이스의 정보도 삭제된다. - 이를 방지하기 위해 데이터를 영속적(Persistent) 데이터로 활용할 수 있는 방법 - 볼륨을 관리하는 방법 : 호스트 볼륨 폴더 공유, 볼륨 컨테이너, 도커 볼륨 호스트 볼륨 공유 : 호스트의 디렉터리와 컨테이너의 디렉터리를 동기화시키는 방법 볼륨 컨테이너 : 볼륨을 사용하는 컨테이너를 다른 컨테이너와 공유하는 것 도커 볼륨 : docker volume 명령어를 사용하는 것 - 도커 자체에서 제공하는 볼륨 기능을 활용해 데이터를 보존할 수 있다. - 사용하는 방법 : [볼륨의 이름]:[컨테이너의 공유 디렉터리] -v : 호스트의 디렉터리와 컨테이너의 디렉터리를 공유한다. -- 호스트 볼륨 공유로 Dock..
== Tips 컨테이너를 대상으로하는 모든 명령어는 컨테이너의 이름 대신 ID를 사용할 수 있다. - 그러나 이름이 너무 길 때는 앞의 2~3자만 입력해도 된다. ex) docker start dd16c1ee6bf2 ex) docker start dd1 - ID 앞자리가 dd1인 다른 컨테이너가 이미 존재한다면 어느 컨테이너를 가리키는지 알 수 없으므로 에러가 발생 - 따라서 ID의 앞자리를 사용해 컨테이너를 제어할 때는 적절히 3~4자를 입력하는 것이 좋다. == Docker Docker - 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 쉽게 사용할 수 있게 만든 프로젝트 가상 머신 장.단점 - 완벽한 운영체제를 생성할 수 있다. - 일반 호스트에 비해 성능 손실이 있다. - 수..
== 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 ..
-- API Socket 논리 구조 생각 1. 네이버 지도 페이지로 돌아왔을 때 Socket을 연결한다. 2. 연결한 클라이언트에게 자신의 친구 리스트, 동일한 일정에 등록되어있는 유저 리스트를 뿌려준다. 3. Server에서는 클라이언트의 실시간 위치를 취합해서 모든 유저에게 동일한 위치 데이터를 뿌려준다. 3.1 Socket 데이터 = {userId, lat, lng} 4. 클라이언트는 친구, 일정 리스트에서 userId를 구분해 표시할 아이콘을 지정한다. TODO 일정 데이터는 어떻게 뿌려줄 수 있을까? - 일정 데이터 (모일 장소) 는 처음 접속했을 때 한번만 뿌려줄 수 있도록 설정한다. - 나중에 유저수가 증가할 경우 지역별로 일정데이터를 관리할 수 있도록 설정한다. == Socket == So..
-- 유저 정보 조회 (동일한 일정이 있을 경우) 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..
Click 이벤트는 마우스 클릭이 종료될 때 발생한다. kakao.maps.Size(width, height) : 크기 정보를 담고 있는 사이즈 객체를 생성한다. kakao.maps.Point(x, y) : 화면 좌표 정보를 담고 있는 포인트 객체를 생성한다. 각각의 marker를 생성하면서 생성된 것과 동시에 addListener에 입력받은 userId, type을 기반으로 함수를 삽입한다. TODO marker를 삭제하지않고 이동하는 방식으로 사용하려면 어떻게 해야할까? - markers를 object형식으로 저장하고, 키값을 userId로 하면 되지 않을까? - userId로 검색을 했을 때 데이터가 있을 경우 markers의 위치만 변경하고 , 없을때 생성하도록 하면? TODO 위도, 경도를 변환..
-- 검색 API에서 태그검색 기능 추가 1. 태그 테이블 전체를 조회한다. SELECT * FROM Tags ; 2. 태그 테이블에서 해당하는 키워드로 검색해 본다. SELECT * FROM Tags WHERE tag LIKE '%na%' ; 3. 검색된 태그 테이블에서 postId만 추출한다. SELECT postId FROM Tags WHERE tag LIKE '%na%' ; 4. 검색 코드에서 WHERE 절에 서브쿼리를 삽입해 병합을 종료한다. SELECT u.userId, u.nickname, u.profileImg, p.postId, p.reBlog, p.title, (SELECT GROUP_CONCAT(img ORDER BY img ASC SEPARATOR ', ') FROM Images W..
-- 요런 블로그 어때요? 1. 조회하는 유저 아이디를 입력받고, 제외한다. SELECT * FROM Users WHERE userId != 1 ; 2. Follows 테이블에서 followUserId를 지정하고, 등록한 followerUserId를 출력한다. SELECT followerUserId FROM Follows WHERE followUserId = 1 ; 3. 조회하는 유저와 팔로우 등록된 사람을 제외한다. SELECT userId, nickname, profileImg FROM Users WHERE userId NOT IN (SELECT followerUserId FROM Follows WHERE followUserId = 1) AND userId != 1 ; 4. RAND()와 LIMIT을..