IT/CS 16

[CS] CRDT

CRDT(Conflict-free Replicated Data Type) 는 분산 시스템에서 데이터 복제를 처리하기 위한 구조다. 1. 주요 특징- 충돌 없는 병합 > 각 노드에서 독립적으로 데이터를 수정한 후, 병합 시 충돌 없이 자동으로 일관된 상태 보장- 최종 일관성 > 네트워크 분리 또는 지연 상황에서도, 모든 노드는 결국 동일한 상태로 수렴- 병합 및 독립 수정 허용 > 여러 노드에서 병렬로 데이터를 수정할 수 있으며, 수정된 데이터는 병합 시 자동으로 조화 2. 종류 (데이터 병합 방식에 따라 나뉨)- 2.1. State-Based CRDT > 각 노드는 데이터의 전체 상태를 주기적으로 다른 노드와 동기화 > 병합 연산자는 결합 연산자를 사용하며, 연산의 순서와 상관없이 동일한 결과 ..

IT/CS 2024.12.11

[CS] .so 파일과 .a 파일 비교

.so 파일과 .a 파일에 대한 비교 글을 작성하고자 한다.결론적으로 .so 파일과 .a 파일은 모두 컴파일된 코드를 담고 있는 라이브러리 파일이지만, 사용하는 방식과 목적이 다르다. 1. .so 파일- 1.1. 정의  - 동적(공유) 라이브러리 파일- 1.2. 특징  - 실행 시간에 프로그램이 라이브러리 로딩  - 동일한 라이브러리를 여러 프로그램이 동시에 사용할 수 있어 메모리 사용량 줄임  - 변경된 라이브러리를 다시 컴파일하지 않고도 프로그램이 업데이트된 내용 사용 가능  - 배포 시 실행 환경에서 반드시 .so 파일 필요 2. .a 파일- 2.1. 정의  - 정적 라이브러리 파일- 2.2. 특징  - 프로그램이 빌드될 때 라이브러리의 모든 필요한 코드가 실행 파일에 포함되어 파일 크기 커짐  ..

IT/CS 2024.12.11

[CS] 사용자 패스워드 전송/보관 방법

사용자 패스워드를 전송 및 보관하는 방법에 대해 정리하고자 한다. 1. 패스워드 전송- 사용자 패스워드를 전송할 때는 네트워크에서의 도청과 변조를 방지해야 한다.- 대표적인 방법으로는 TLS(Transport Layer Security), CSRF(Cross-Site Request Forgery) 토큰 사용 등이 있다. 2. 패스워드 저장- 서버에서 사용자 패스워드를 해싱하여 저장한다.- 이때 사용되는 해싱 알고리즘으로는 bcrypt, 솔트(salt) 추가 등이 있다.(여기서 솔트(salt)란, 암호학 및 보안에서 사용되는 무작위로 생성된 고유한 데이터로 패스워드를 해싱하기 전에 추가하는 값을 의미한다. 즉, 패스워드에 솔트를 추가한 후 해싱한다.) 3. 패스워드 검증- 사용자가 로그인할 때 입력한 패..

IT/CS 2024.12.11

[CS] Base64 인코딩

이번엔 Base64 인코딩에 대해 정리하려고 한다. 1. 정의- 64개의 ASCII 문자를 사용하여 바이너리 데이터를 텍스트 형식으로 변환하는 인코딩 방식(이 때, 64개는 A-Z(26자), a-z(26자), 0-9(10자), +,/(2자) 로 구성되어 있다.) 2. 작동 방식- 1) 데이터를 3바이트(24비트)씩 나눈다.- 2) 각 24비트를 6비트씩 분할하여 4개의 블록으로 나눈다.- 3) 각 6비트 블록을 64개의 ASCII 문자로 변환한다.여기서 원본 데이터의 길이가 3의 배수가 아니라면 남은 바이트의 수에 따라 '=' 패딩 문자를 추가한다. 3. 주요 특징- 데이터 크기 증가 (원본 데이터의 크기보다 33% 증가, 3바이트 입력이 4바이트 출력으로 변환되므로)- 가독성 (인코딩된 데이터는 읽기..

IT/CS 2024.12.11

[CS] System Call

System Call 에 대해 정리하고자 한다. 1. 정의- 사용자 모드에서 실행되는 프로그램이 커널 모드에서 실행되는 운영 체제 기능을 호출하기 위한 인터페이스(여기서 사용자 모드는 애플리케이션 실행 모드를 의미하고 제한된 권한을 가진다. 한편 커널 모드는 운영 체제 실행 모드를 의미하고 시스템 자원에 대한 모든 권한을 가진다.) 2. 역할- 하드웨어 보호  > 애플리케이션이 직접 하드웨어에 접근하지 못하도록 하여 시스템 안정성을 보장한다.- 추상화 제공  > 운영 체제가 다양한 하드웨어를 추상화하여 애플리케이션이 동일한 자원으로 자원을 사용할 수 있도록 한다.- 자원 관리   > CPU, 메모리, 디스크, 네트워크 등 시스템 자원을 효율적으로 관리한다.- 보안  > 사용자 애플리케이션이 운영 체제의 ..

IT/CS 2024.12.09

[CS] 예외 처리

예외 처리의 정의 & 체크 예외 vs. 언체크 예외 & 자주 쓰이는 표준 예외 클래스에 대해 정리하고자 한다. 1. 예외 처리란? - 프로그램 실행 시 발생할 수 있는 예외에 대비하는 것으로 프로그램의 비정상 종료를 막고 실행 상태를 유지하는 것 2. 체크 예외 vs. 언체크 예외 - 체크 예외 - 상속: Exception - 예외 확인 시점: 컴파일 단계 - 예외 처리: O - 장점: 개발자의 실수 감소 - 단점: 번거로움 / 레이어 간의 의존성 증가 / Stream 내에서 사용 X - 언체크 예외 - 상속: Runtime Exception - 예외 확인 시점: 실행 단계 - 예외 처리: X - 장점: 레이어 간의 의존성 감소 - 단점: 개발자의 실수 증가 3. 자주 쓰이는 표준 예외 클래스 - IOE..

IT/CS 2024.03.24

[CS] Cookie

Cookie 의 개념, 특징, 사용 목적에 대해 작성하고자 한다. 1. 개념 - Client 에 저장하는 key-value 형태의 작은 데이터 파일 2. 특징 - 브라우저 단위로 Cookie 생성 - 다른 도메인을 대신하여 Cookie 발급 불가 - 만료 시간까지 상태 정보 유지 3. 사용 목적 - 웹 사이트 재방문 시 효율적으로 서비스를 제공하기 위함 4. 출처 - https://www.youtube.com/watch?v=XgcCkcKGbys [ 10분 테코톡 - 디투의 쿠키와 세션 ]

IT/CS 2024.03.17

[CS] Connection-Timeout vs. Read-Timeout

Connection-Timeout 과 Read-Timeout 의 개념 비교에 대해 글을 쓰고자 한다. 1. Connection-Timeout - 종단 간 연결하는데 소요되는 최대 시간 - 이 시간을 넘기게 되면 연결할 수 없는 것으로 판단하고 에러 발생 2. Read-Timeout - 연결된 종단 간에 데이터를 주고 받을 때 소요되는 최대 시간 - 이 시간을 넘기게 되면 데이터를 주고 받을 수 없는 것으로 판단하고 에러 발생 * 참고 여기서, "연결"은 TCP 3-way handshake 를 통해 TCP 연결이 생성되는 것을 의미한다. 3. 출처 - https://alden-kang.tistory.com/20

IT/CS 2024.03.17

[CS] HTTP/1.1 과 HTTP/2

HTTP/1.1 과 HTTP/2, 각각의 특징에 대해 작성하고자 한다. 1. HTTP/1.1 - Persistent Connection > 지정한 timeout 동안 커넥션을 닫지 않는 방식 - Pipelining > 하나의 커넥션에서 응답을 기다리지 않고 순차적인 여러 요청을 연속적으로 보내 그 순서에 맞춰 응답을 받는 방식으로 지연 시간을 줄이는 방법 - Head of Line Blocking 문제 존재 - Header 구조의 중복 2. HTTP/2 - HTTP 메시지 전송 방식의 변화 > 바이너리 프레이밍 계층 사용 . 파싱, 전송 속도 증가 & 오류 발생 가능성 감소 - 요청과 응답의 다중화 > Head of Line Blocking 문제 해결 - 리소스 간 우선 순위를 설정 가능 - Server..

IT/CS 2024.03.17

[CS] Real-Time Web

Real-Time Web, 그리고 이와 관련된 개념까지 같이 정리하고자 한다. 1. Real-Time Web 이란? - 인터넷에서 사용자들로 하여금 창작자가 정보를 만들어 내는, 즉시 수신할 수 있도록 하는 기술 혹은 서비스 2. 관련 기술의 특징 - Polling (폴링) - 전송할 데이터의 유무에 관계 없이 주기적으로 요청을 수행하는 방법 - 클라이언트는 지정된 시간 간격에 맞춰 서버에 지속적인 요청을 보냄 - 서버는 각 요청 마다 가용 데이터나 데이터가 없는 경우 빈 데이터를 보내거나 실패와 같은 적절한 응답을 함 - 데이터의 유무에 관계 없이 요청하여 불필요한 네트워크 비용이 발생 - 클라이언트와 서버 자원을 많이 낭비함 - 요청의 간격이 길면 실시간성이 떨어짐 - 반대로 간격이 짧으면 많은 자원..

IT/CS 2023.06.03