분류 전체보기 439

몽고DB 13강. 샤딩 시스템 구성

1. shard 폴더 생성 mkdir c:\mongolab\shard1\r1 mkdir c:\mongolab\shard1\r2 mkdir c:\mongolab\shard1\r3 mkdir c:\mongolab\shard2\r1 mkdir c:\mongolab\shard2\r2 mkdir c:\mongolab\shard2\r3 mkdir c:\mongolab\shard3\r1 mkdir c:\mongolab\shard3\r2 mkdir c:\mongolab\shard3\r3 폴더가 잘 생성되었는지 확인해보자. cd c:\mongolab dir 2. config 서버 저장 폴더 생성 (shard에 대한 메타 데이터를 가지고 있는 서버) mkdir c:\mongolab\config\r1 mkdir c:\mon..

DB/MongoDB 2022.05.06

블로그-V3. Multipart/form-data 전송

클라이언트가 서버에게 MIME 타입이 image/png 파일을 보내고 싶다. 이미지 파일을 보내고 싶은 것이다. 1. 바이트로 변환 (직렬화) 실제로는 비트로 변환하는 것인데 http 통신은 8비트 단위로 끊어서 보내기 때문에 바이트 스트림이라고 한다. 이미지 파일을 바이트로 변환하면 기계어(0101..)로 바뀌게 된다. 이를 직렬화 되었다고 한다. 이 데이터를 바디에 담아서 fetch 전송하게 된다. 서버는 바이트를 받게 되는데 이 바이트가 이미지 파일인지 json 데이터인지 알 수가 없다. 얘가 어떤 타입인지 알아야 바디의 데이터를 역직렬화 할 수 있다. 그렇기 때문에 헤더에 MIME 타입을 보내줘야 한다. 서버가 헤더에 MIME 타입이 image/png 인 것을 확인하고 .png 파일로 변환한다. ..

Spring/Tistory 2022.05.06

몽고DB 12강. 샤딩

하둡 : 대용량 데이터를 분석할 수 있는 플랫폼 데이터를 모을 때 기본적으로 분산 처리한다. 수천대의 분산된 컴퓨터에 대용량 파일을 저장할 수 있는 기능을 제공하는 분산 파일 시스템(HDFS; Hadoop File System) 1000mB 동영상 10개를 저장할 때 5개의 컴퓨터에 분산저장을 한다고 하면 동영상 10개를 2개씩 나눠서 저장하는게 아닌 1000mB를 200mB씩 나눠서 분산 저장하는 개념이다. 분산 저장을 하둡이 해준다. 분산된 데이터를 다시 합치기 위해서는 하둡이 메타 데이터를 알고 있어야 한다. 어디에 얼마만큼 저장되어 있는지 알아야 동영상을 실행하기 위해 모을 수 있기 때문이다. 분산 저장한 데이터를 다시 합치는 것을 맵 리듀스라고 한다. 우리가 사용하려는 몽고DB도 마찬가지로 분산..

DB/MongoDB 2022.05.04

블로그-V3. 프로필 사진 미리보기 테스트

이미지를 클릭했을 때 파일 선택창이 떠야 하고, 파일 선택창에서 파일을 선택하면 변화가 발생한 상태이기 때문에 change 메서드를 사용한다. css 선택자로 선택한 돔의 값이 변화할 경우 캐치하는 메서드이다. 프로젝트에 적용하기 전에 테스트 파일을 만들어 테스트해보자. 김길동 홍길동 최철수 나길동 $("#testChange").change((event) => { console.log(event); }); event가 가지고 있는 것에 어떤 게 있는지 살펴보자. 클릭했을 때 콘솔에 찍히는 게 아니라 값이 변경되었을 때 찍힌다. event는 활용할 수 있는 옵션 값을 매우 많이 가지고 있다. target도 있고, targer의 옵션 값도 다 들고 온다. input 태그도 잘 동작하는지 테스트해보자. 김길동..

Spring/Tistory 2022.05.04

몽고DB 11강. 리플리카 셋 실습, 저널링

https://blog.naver.com/getinthere/222302852437 몽고DB 6강 - 리플리카 셋 한 개의 Primary 서버와 두 개의 Secondary 서버로 구성됨. Primary 서버에서 데이터를 받으면 Seconda... blog.naver.com 1. mobaXterm 실행 터미널 창 여러개 띄우는것보다 mobaXterm의 탭으로 서버 여러개 띄우는게 편하다. cmd shell로 띄울 수도 있다. 우클릭해서 cmd 선택 2. 폴더 생성 Windows 경로 mkdir c:\mongo mkdir c:\mongo\var1 mkdir c:\mongo\var2 mkdir c:\mongo\var3 Linux 경로 mkdir /home/mobaxterm/mongo mkdir /home/mo..

DB/MongoDB 2022.05.03

몽고DB 10강. 레플리카 셋

레플리카 셋을 구성하는 3개의 서버는 서로 다 내부적으로 스레드가 돌고 있다. 연결되어있는 애랑 나랑 가지고 있는 데이터가 같은지 체크하는 스레드이다. 양쪽으로 비교해서 가지고있는 데이터가 같으면 동기화가 잘된 것이다. 이렇게 비교하는 주기가 짧다. 길면 해킹당할 수 있기 때문이다. 만약 하나의 서버에 바보 데이터를 천재로 해킹하여 바꿨을 때 오른쪽에 너 천재야? 물어봐서, 아니 바본데? 스코어 1:1 왼쪽에 너 천재야? 물어봐서, 아니 바본데? 스코어 2:1 천재라는 데이터가 바보로 동기화된다. 그렇기 때문에 한, 두대로는 만들지 않는다. 항상 3대 이상으로 만든다. 무결성과 신뢰성을 지키기 위해! 이때 내부적으로 돌고 있는 스레드를 heartbeat라고 한다. 이 heartbeat 스레드는 2초마다 ..

DB/MongoDB 2022.05.03

파이썬 8강. 네이버뉴스 크롤링

네이버 뉴스의 카테고리별로 주소 구조를 살펴보니 sid1이 카테고리 변수인 것을 확인할 수 있다. 1. 전체 페이지 다운로드 https://n.news.naver.com/mnews/article/088/0000756435?sid=100 (매일신문) https://n.news.naver.com/mnews/article/586/0000038374?sid=100 (시사저널) https://n.news.naver.com/mnews/article/123/0002273936?sid=100 (한국경제TV) https://n.news.naver.com/mnews/article/005/0001523282?sid=100 (국민일보) 100 -> 카테고리 -> 변수명 : sid1 088 -> 신문사 -> 변수명 : oid ..

Python 2022.05.03

블로그-V3. 프로필 사진 변경 UI

원래는 input에 file타입이여야 파일선택하며 탐색기 창이 뜨고 파일을 선택할 수 있었는데 이미지 사진을 클릭했을 때 파일을 선택할 수 있는 서비스를 만들어보자. 그 전에 user 모델에 profileImg 필드를 추가해준다. @Column(nullable = true) private String profileImg; // 실제로 이미지 경로 프로필 이미지를 클릭하면 파일 탐색기가 열리며 프로필 사진을 설정할 수 있어야한다. profile-img-btn의 클릭메서드에는 내부에 ( )라는 인자가 있기 때문에 이 버튼을 클릭하면 안에 내용을 실행해! 라는 것이고, profile-img-input의 클릭은 그냥 클릭하라는 메서드이다. $("#profile-img-btn").click(() => { // 파..

Spring/Tistory 2022.05.03

블로그-V3. 댓글 라이브러리 추가

댓글은 라이브리를 사용할 것이다. https://livere.com/apply 라이브리 - 설치 LiveRe 월 이용료 설치 방법 city image City 시티 버전은 누구나 사용 가능한, 기본에 충실한 무료 버전입니다. 무료 + 광고 Premium image Premium 프리미엄 버전은 다양한 기능을 제공하는, 기업에 최적화 livere.com URL에는 localhost가 먹지 않기 때문에 본인 IP를 검색하여 넣어주자. 위 코드를 복사하여 게시글 상세보기 페이지에 추가해준다. 붙여넣기 할 때 바로 추가하지 말고 div 박스를 만들어 안에 넣어준다. 그래야 나중에 관리하기에 좋다. 주소설계의 번호를 보고 알아서 댓글이 구별된다. [출처] https://cafe.naver.com/metacodin..

Spring/Tistory 2022.05.03

몽고DB 9강. 인덱스 개념

인덱스가 없으면 SELECT 할 때 풀 스캔을 하게 된다. _id는 기본적으로 생성되는 인덱스이고 도큐먼트를 가리키는 유일한 키 값(PK)으로 사용된다. 이 키 값은 해시로 만들어진다. 컬렉션을 posts라고 하고, 문서 하나를 post라고 해보자. 하나의 게시글은 여러 개의 댓글을 가질 수 있다. 즉, 필드에 comments 컬렉션을 가지고 있을 수 있다. 그리고 이 컬렉션 안에는 comment 문서를 가지고 있다. 8번 게시글만 댓글을 가지고 있을 때 8번 게시글을 SELECT 할 때 comments 컬렉션도 같이 나온다. 만약 전체 댓글처럼 댓글만 찾고 싶을 때는 게시글을 일일이 하나씩 들어가면서 댓글을 가지고 있나 찾아볼 수 없기 때문에 원본 데이터를 따로 하나 만들어준다. 이때 중복해서 원본데이..

DB/MongoDB 2022.05.02