시스템 콜
·
Computer Science/Operating System
시스템 콜이 무엇인가?시스템 콜은 응용 프로그램이 직접적으로접근하지 못하는 하드웨어 자원에 접근하기 위해 사용되는 인터페이스이다. 즉, 시스템 콜을 호출함으로서 해당 자원에 간접적으로 접근하게 된다.    우리가 사용하는 시스템 콜 예시와 동작 과정python의 import sys, time도 시스템 콜이고, 대표적으로 file I/O의 open, read, write 등이 있다. 한 파일에서 다른 파일로 데이터를 복사하는 프로그램을 예로 들어서 시스템 콜이 동작하는 과정을 살펴 본다.  시스템 콜 예시1. 아래 명령어와 같이, 복사할 input 파일과 output 파일의 이름을 작성한다.$ cp input.txt output.txt 2. 프로그램은 input 파일을 open(system call)하고,..
REST API URI 네이밍
·
Computer Science/Network
자원을 명사로 나타내라.RESTful URI가 가리키는 자원은 객체이다. 그렇기 때문에 동사가 아니라 명사로 칭한다. 자원은 4가지 범주로 분류할 수 있다. 문서, 컬렉션, 스토어, 컨트롤 자원이 어떤 범주에 속하는지에 따라 일관된 네이밍을 사용한다. 문서문서 자원은 DB의 하나의 레코드, 하나의 객체 인스턴스와 유사한 단일 자원의 개념이다. 단수를 사용하여 문서 자원을 표현한다.http://api.example.com/device-management/managed-devices/{device-id}> http://api.example.com/user-management/users/{id}> http://api.example.com/user-management/users/admin>   컬렉션서버가 관리..
CORS(Cross-Origin Resource Sharing)
·
Computer Science/Network
CORS란Cross-Origin Resource Sharing으로 교차 출처 리소스 공유라는 뜻이다. 다른 출처에서 리소스를 요청할 때 지켜야하는 정책이다. 여기서 출처(Origin)은 protocol, host, port까지 의미한다.  CORS HTTP 요청 방식단순 요청을 보내는 것(Simple Request)예비 요청을 보내서 확인 후 보내는 것(Preflight)인증된 요청을 사용하는 방식(Credential Request) Simple Request예비요청없이 서버에 바로 요청을 보내는 방법이다. 서버에 바로 본요청을 보낸 뒤, 서버는 헤더에 ACCESS-CONTROL-ALLOW-ORIGIN 값 등을 붙혀서 보내주면 브라우저가 CORS 정책 위반 여부를 검사한다.조건GET, POST, HEAD..
RESTful API 개념
·
Computer Science/Network
[REST API 디자인 가이드]https://covenant.tistory.com/241 REST란? REST API 디자인 가이드REST란? REST API 디자인 가이드 시작하며 작년 저의 커리어의 첫 번째 회사인 스타트업 입사 첫날 사수님이 REST API를 구현해본적이 있냐고 물어보셨습니다. 그런 경험이 없다고 하니 REST API 디자인covenant.tistory.com Naver D2 강연 : https://www.youtube.com/watch?v=RP_f5dMoHFc REST분산 하이퍼미디어 시스템(ex : 웹)을 위한 아키텍쳐 스타일아키텍쳐 스타일 : 제약조건의 집합 REST 아키텍쳐 스타일1. Uniform (유니폼 인터페이스)유니폼 인터페이스는 URI로 지정한 리소스에 대한 조작을..
Next Permutation
·
Computer Science/Algorithms
Next Permutation ? 다음 순열이란, 말 그래도 해당 숫자의 다음에 올 순열의 수를 의미한다. 123 -> 132, 132 -> 213, 213 -> 231 ... 와 같다. 그렇다면 우리는 123의 다음 순열인 132를 구하는 과정을 살펴보겠다. 1. 해당 수의 맨 오른쪽부터 왼쪽으로 차례대로 $ i $ > $  i -1 $  이고, $ A_{i} $ > $ A_{i-1} $인 수를 찾는다.$ ( $$ i $는 인덱스 번호, $ A_{i} $는 해당 자리의 값$ ) $  2. 두 수 분리하기. 찾은 두 수를 막대를 하나 긋고, 임의로 왼쪽, 오른쪽으로 분리시킨다. 3. 왼쪽 공간의 가장 오른쪽 숫자에 대하여 오른쪽 공간의 우측 끝 부분 부터 왼쪽으로 탐색하면서, 더 큰 수를 찾는다.  4...
TCP 3, 4 way handshake
·
Computer Science/Network
TCP와 UDP가 무엇인지(https://kimdozzi.tistory.com/271), 3, 4 way handshake(https://kimdozzi.tistory.com/270)가 왜 필요한 것인지 잘 모르다면, 해당 링크들을 읽고 오길 바란다. 이전에는 이론을 통해 SYN, ACK를 주고 받는 과정을 확인하였다면, 이번에는 실습을 통해 확인해보겠다. 인터넷 연결이 가능한 환경, 와이어샤크만 있으면 된다. 아래 링크에서 다운 받고 오자. 와이어샤크를 설치하다 보면, Npcap이라는 것도 같이 다운을 권장하는 창이 뜨게 되는데, 필요한 것인 같이 다운받아 주자. 와이어샤크를 실행하게 되면 지금 쓰고 있는 인터넷 수단을 찾아서 클릭해줘야 한다. 아마 Npcap이 없으면 이 부분이 실행이 안될 것이다....
TCP와 UDP 차이
·
Computer Science/Network
TCP - 전송 제어 프로토콜IP가 인터넷 프로토콜로서 복잡한 인터넷 망 속에서 클라이언트와 서버 간에 통신할 수 있게 IP 주소와 패킷과 같은 규칙을 통해 통신을 하게 하는 것이라면, TCP는 IP규칙으로만 통신하기에 부족하거나 불안정하던 여러 단점들(패킷 순서가 이상하거나 패킷이 유실)을 커버해, 패킷 전송을 제어하여 신뢰성을 보증하는 프로토콜로 보면 된다.IP 규칙에 써있는대로 목적지에 다다랐으면, TCP 규칙에 써있는대로 올바르게 도착했는지 정확히 누구에게 전달되야하는지 하나하나 따진다고 생각하면 된다. 그래서 은행 업무나 메일과 같은 반드시 수신자가 정보를 받아야 하는 신뢰성 있는 통신이 필요할 때 사용된다.전송 데이터가 포장되는 과정을 나열해보면 다음과 같다.전송 데이터를 TCP 포장한다.포장..
브라우저에 www.google.com을 일어나는 일
·
Computer Science/Network
1. 브라우저에 www.google.com 입력2. 캐시 체크먼저 브라우저 캐시가 있는데 기존에 google.com을 방문했다면, 방문한 기록이 남아 있어서 빠르게 접근할 수 있습니다.google.com에 방문한 적이 없다면, OS캐시를 찾아보게 됩니다. 말 그래도 운영체제 안에 있는 캐시로 systemcall을 통해 그 내용에 접근할 수 있습니다.세번째는 라우터 캐시를 확인합니다. 라우터는 집에서 사용하는 공유기를 생각하면 됩니다. 거기서도 DNS내용을 저장합니다.마지막으로 한국에서 인터넷을 제공하는 ISP(Internet Service Provider) 캐시입니다.  3. 요청한 URL이 캐시에 없으면 DNS로 IP주소 획득ISP 캐시에서까지 그 IP주소를 찾을 수 없었다면, 이제 ISP의 DNS S..
1, 2차원에서 구간 합 구하기 - 1
·
Computer Science/Algorithms
이 글은 https://movingbean.tistory.com/17 의 블로그에서 작성된 내용을 바탕으로 정리 + @한 글입니다. 누적 합에 대한 내용이 너무 잘 정리되어 있습니다!!!!!! 꼭 보시길 바랍니다. 1차원 공간 vs 2차원 공간점 업데이트 vs 구간 업데이트 점 쿼리 vs 구간 쿼리 (특정 위치에 대한 개수만을 묻는가? vs 어떤 구간의 총합을 묻는가?)오프라인 쿼리 vs 온라인 쿼리 (질문을 업데이트가 모두 끝나고 하는가? vs 업데이트 도중에 질문을 하는가?1. 1차원 공간, 점 업데이트, 오프라인 쿼리점 업데이트라는 것은 초기 값만 세팅하는 경우도 점 오프라인으로 볼 수 있다고 한다. 가장 기본적으로 누적 합(PrefixSum)을 구하는 것을 떠올릴 수 있다.  시간 복잡도는 누적 ..
[MYSQL] dbeaver 연결 시 Public Key Retrieval is not allowed 에러 해결하기
·
Computer Science/DataBase
발생한 상황Local 환경으로 Mysql 설치 후, DBeaver에 Test Connection을 시도했다. 'Public key Retrieval is not allowed' 라는 문구와 함께 연결에 실패했다. 찾아보니, MySQL 8.0 이상부터 생길 수 있는 문제라고 한다. (Mysql은 쓸 때 마다 에러가 생김.....)  해결하기 위한 방법으로 Driver properties 설정을 변경하자.  https://velog.io/@dailylifecoding/DBeaver-MySQL-connecting-error-Public-Key-Retrieval-is-not-allowed-solved
[Network] foward & reverse proxy server
·
Computer Science/Network
프록시 서버란 ?프록시, 웹 프록시라고도 하는 정방향 포록시는 클라이언트 시스템 그룹 앞에 위치하는 서버이다. 컴퓨터가 인터넷의 사이트 및 서비스에 요청하면 프록시 서버가 이러한 요청을 가로채고 중개자처럼 해당 클라이언트를 대신하여 웹 서버와 통신한다.ex)A : 사용자의 가정용 컴퓨터B : 정방향 프록시 서버C : 웹 사이트의 원본 서버(웹 사이트 데이터가 저장되는 곳) 표준 인터넷 통신에서는, 컴퓨터 A가 컴퓨터 C에 직접 연결하고 클라이언트는 원본 서버에 요청을 보내며 원본 서버가 클라이언트에 응답한다. 정방향 프록시가 설정되면 A가 대신 B에 요청을 보내고 B가 요청을 C로 전달한다. 그런 다음 C가 B에게 응답을 보내고 B가 응답을 A에게 다시 전달한다. 그렇다면, 정방향 프록시를 사용하는 이유..
그래프 표현 방법 간단한 정리
·
Computer Science/Algorithms
그래프(Graph)정점과 간선의 집합으로 구성되는 자료구조  방향 그래프간선에 방향이 있는 그래프A정점에서 B정점으로 향하는 간선과 B정점에서 A정점으로 향하는 간선이 서로 다를 수있다.무방향 그래프간선에 방향이 없는 그래프A-B를 연결하는 간선이 동일한 간선이다.가중치 그래프간선에 가중치(weight) 혹은 비용(cost)이 할당된 그래프연결된 정점들 간 탐색에 드는 비용이나, 연결 강도 등을 표현  그래프 표현 방법인접 행렬일반적으로 2차원 배열을 이용해서 표현adj[행][열] = 연결여부(or 가중치)공간 복잡도V개의 정점이 있다면, V*V 만큼의 공간을 사용한다.시간 복잡도연결관계(가중치) 조회/저장 : O(1)한 정점에 연결된 모든 간선 조회 : O(V)A와 B를 잇는 간선 존재 여부 확인 : ..