분류 전체보기 60

RDBMS 인덱스

RDBMS의 인덱스는 데이터 조회 시 더 빠르게 조회 하기 위해 특정 컬럼 또는 특정 컬럼들로 미리 정렬을 해두는 것이다. 예시로 아래와 같은 쿼리문이 있다 할때 SELECT name FROM USER_TABLE WHERE sign_up_date < '2015-12-25' 인덱스가 없다면 테이블을 전부 읽어봐야 겠지만(FULL TABLE SCAN) sing_up_date에 대한 인덱스가 있다면 '2015-12-25' 이전 데이터만 전부 가져오면 될 것이다. 인덱스는 테이블을 물리적으로 정렬 시켜버리는 클러스터드 인덱스가 있고 정렬된 인덱스 테이블을 따로 만드는 넌 클러스터드 인덱스가 있다. 물리적으로 정렬을 시켜버리는 만큼 클러스터드 인덱스는 테이블 당 하나밖에 못만들고 따로 테이블을 만드는 넌 클러스터..

DB 2023.05.23

ec2에서 k8s 클러스터 구축하기

이번 글은 kafka의 resilient를 위해 k8s 클러스터를 구축한 경험을 정리한 글입니다. 가장 먼저 memory swap을 꺼줍니다. swapoff -a 이유는 k8s는 컨테이너들의 리소스 사용량을 관리하는데 메모리가 부족할때 억지로 디스크를 끌어다 쓰는 memory swap특성상 k8s입장에선 예외이기 때문입니다. 찾아보면 아래 명령어를 사용해 swap부분을 주석처리(#) 해주라하는데, 저는 들어가보니 swap관련된 줄이 없더군요. sudo vi /etc/fstab 다음은 설치 가능한 패키지 리스트를 한번 새로고침 해줍니다. sudo apt update & sudo apt-get update 이후 필요한 패키지들을 다운 받아줍니다. sudo apt-get install \ apt-transpo..

kubernetes 2023.04.14

docker로 한 호스트에서 kafka multi broker 를 띄울 시org.apache.kafka.common.kafkaexception: failed to acquire lock on file .lock in /var/lib/kafka/data. a kafka instance in another process or thread is using this directory.

로컬에서(mac) docker compose를 사용해 zookeeper와 kafka multi broker를 띄우던 중 제목과 같은 에러가 발생했다. 이는 docker yml에서 volumes설정 때문이었는데, 제목에도 나와 있듯 이미 다른 kafka 프로세스가 점유하고 있어서이다. volumes: - /Users/humanlearning/Downloads/docker/kafka:/var/lib/kafka/data 필자는 모든 서비스의 volumes 위와 같이 설정했다. 그렇다면 혹자는 당연히 다 같은 폴더로 지정하면 에러가 뜨는거 아니냐 하겠지만, 맞다. 사실 그냥 volumes를 안바꾸고 할 수 있는 방법은 없을까 객기를 부려봤다. 뭐 .lock 파일을 지우면 된다고 하는데 command : rm /..

docker 2023.03.17

RSA deep dive

RSA는 큰 수의 소인수분해가 어렵다는 점을 이용했으며 현재 https를 포함해 전자상거래에서 가장 널리 쓰이는 알고리즘입니다. 로널드 라이베스트(Ron Rivest), 아디 샤미르(Adi Shamir), 레너드 애들먼(Leonard Adleman)의 연구에 의해 체계화되었으며, RSA라는 이름은 이들 3명의 이름 앞글자를 딴 것입니다. 먼저 RSA가 뭔지 순서대로 알아가 봅시다. 공개키와 개인키는 각각 두 정수 n, e와 n, d로 이루어져 있는데 n, e, d를 구하는 방법은 아래와 같습니다. n 임의의 두 소수 p, q를 정합니다. n은 p와 q의 곱입니다. n = p * q Φ(n)은 p와 q에서 각각 1을 뺀 값의 곱입니다. Φ(n) = (p-1) * (q-1) e e는 1과 Φ(n)사이의 Φ(..

수학 2023.03.05

유클리드 호제법 증명

유클리드 알고리즘이라고도 하는 유클리드 호제법은 너무 큰 두 수의 최대 공약수를 구하기 위한 알고리즘입니다. 유클리드 호제법이 뭔지부터 알아보자면 두수 a,b가 있고 a% b 값을 r이라 할 때 gcd(a, b)는 gcd(b, r)과 같아서 점차 숫자의 크기를 줄여가며 최대공약수를 쉽게 구할 수 있게 해주는 방식입니다. 그럼 저희가 증명해야할 것이 바로 눈에 들어옵니다. 바로 gcd(a,b) = gcd(b, r)이라는 것이죠. 단계적으로 증명해 나가보죠. 먼저 a, b는 정수이고 a >= b라 가정합니다. gcd(a, b)나 gcd(b, a)나 같으므로 일반성에 영향을 끼치지 않는 조건이죠. 그러면 a = bq + r을 만족하는 유일한 정수 q, r이 존재합니다. 이때 0

수학 2023.02.23

DFS / BFS

본 글에선 스택과 큐에 대해 알고 있다는 가정하에 설명합니다. DFS와 BFS는그래프에서 탐색을 하기 위한 알고리즘입니다. 그래프는 아래와 같이 노드와 간선으로 이루어진 구조를 말합니다. 잘 아실 이진트리도 이에 해당합니다. 긴말 없이 DFS부터 알아보도록 하겠습니다. Depth First Search DFS는 자료구조 stack을 이용해 구현됩니다. DFS의 작동 과정을 말로 먼저 알아보면 시작 노드를 스택에 삽입하고 방문처리한다. 스택의 최상단 노드에 방문하지 않은 인접 노드를 스택에 삽입하고 방문처리한다.(여러 개일 경우 통상적으로 가장 작은 노드부터 삽입한다.) 방문하지 않은 인접 노드가없을 경우 최상단 노드를 꺼낸다. 방문하지 않은 노드가 없을 때 까지 과정 2,3번을 반복한다. 탐색의 시간 복..

algorithm 2023.02.01

transformer 논문리뷰

최근 chatgpt가 나오며 떠들썩하던데 그런 chatgpt의 model architecture인 transformer에 대해 알아봅시다. 먼저 andrew ng님의 연구 논문 읽는 법에 대해 알아보고 갑시다. 한 글자 한 글자 다 읽는 것은 최악의 전략이다. 제목, 초록, 도표를 읽어라. 특히 딥러닝 분야에선 대부분 도표에 논문이 요약되어 있는 경우가 많다. 그다음 서론과 결론 도표를 다시 봐라. 그다음 논문을 위부터 아래로 쭉 읽어라 하지만 수식은 패스, 또 중요하지 않은 것 같은 부분도 패스 저자가 뭘 하려는지 생각해라 해당 논문의 접근법의 핵심이 뭔지 생각해라 너가 해당 논문에 나온 걸 어떻게 사용할 수 있는지 생각해라 다른 어떤 논문을 더 읽어볼지 생각해라 이제 본격적으로 논문을 읽어봅시다. t..

deep learning 2023.01.27

https란

HTTP는 요청과 응답이 plain text즉 사람이 봐도 이해할 수 있는 글로 이루어져 있습니다. 이에 따라 중간에 누가 요청이나 응답을 가로채갈시 내용이 그냥 노출되어 버립니다. 이에 따라 hyper text transfer protocol secure socker layer라는 것이 나오게 됐다. HTTPS는 인터넷 상에서 정보를 암호화하는 SSL(=TSL)프로토콜을 이용해 HTTP통신을 하는 통신규약이다. 암호화 방식에는 대칭키와 비대칭키 방식(공개키 방식)이 있는데, 대칭키는 키 하나로만 복호화, 암호화 둘다 할 수 있는거고 비대칭키는 키a로 암호화하면 키b로만 복호화 할 수 있고 키b로 암호화하면 키a로만 복호화 할 수 있는 방식이다. HTTPS에서는 이 둘을 적절히 섞어 사용한다. 아래 사진..

network 2023.01.18

http란

hyper text transfer protocol은 이름에서 알 수 있듯이 protocol 즉 어떠한 약속, 규칙입니다. HTTP는 클라이언트-서버 프로토콜입니다. 이는 수신자 측에 의해 요청이 초기화 되는 프로토콜을 의미합니다. HTTP는 사람이 읽을 수 있으며 간단하게 고안되었습니다. HTTP에는 요청(req)과 응답(res)가 있는데 각각의 생김새는 아래와 같습니다. Start line : 요청의 종류(get,post 등등..), 요청을 보내는 리소스의 경로, HTTP의 버전을 나타냅니다. status line : 응답의 start line을 status line이라 하는데, 요청의 성공 여부와, 그 이유를 나타내는 상태코드를 나타냅니다. HTTP headers : 클라이언트와 서버가 요청 또는 ..

network 2023.01.18

CODE ch.6 전신과 릴레이

이번글은 할스 펫졸드 님의 책 CODE를 김현규 님이 번역한 책의 여섯 번째 챕터에 대해 제가 이해하고 느낀 점에 대한 겁니다. 이전 장인 5장에선 먼 거리에서는 전신하기 어렵다는 문제점이 있었습니다. 이번장에선 이를 리피터라 명명된 간단한 장치를 통해 해결한 모습을 보여줍니다. 전신에 대해 이야기하기 전, 전신 시스템이 나오기 이전에 장거리 통신을 하기 위해선 어떤 방법을 사용했을까요? 뭐 다들 아시는 마차도 있을거고 높은 곳에서 망원경으로 보일만한 거리에서 깃발을 흔들어 이를 릴레이로 한다던가.. 마치 봉화대처럼 말이죠. 중학교 때 전자석이란 걸 배우셨을 겁니다. 강철 막대기에 전선을 휘감으면 그 강철막대기는 자석이 된다는 현상 말이죠. 오른손의 법칙.. 기억하시죠? 무튼 이러한 전자석이 전신 시스템..

cs 2023.01.15