목록분류 전체보기 (78)
공대생 정리노트
강의에서 나오는 article들을 읽지 않고 있었는데, 수업이 article들을 읽은 것을 전제 하에 진행되기 때문에 읽지 않고 따라가기가 힘들어 졌다. 매일 강의 하나씩 들으려고 했는데, 늦어지더라도 article들을 읽고 강의를 들으려고 한다. article들도 읽고 정리해서 블로그에 적을 것이다 비트코인 주소 앞서 3강에서 나왔던 것처럼 비트코인 주소는 public key에서 파생이 된다. 지갑을 제어할 수 있는 private key에서 Elliptic Curve Multiplication을 통해 Public Key를 만든다. Elliptic Curve Multiplication에 대해서는 따로 다루지 않았다.(one way function을 만드는데 사용되는 것 같다) 이후 Public Key에서..
출처 : https://ocw.mit.edu/courses/sloan-school-of-management/15-s12-blockchain-and-money-fall-2018/video-lectures/session-3-blockchain-basics-cryptography/ 오늘 강의에서는 주로 해시 함수와 Merkle Trees를 다뤘다. Cryptographic Hash Function - 어느 사이즈의 input x가 들어와도 고정된 사이즈의 output이 반환된다(Hash). - 같은 값의 x이 같은 해시함수를 통과하면 같은 해시가 나온다. - 효율적으로 계산된다. - 해시 결과를 가지고 input x를 추정하기 굉장히 어렵다. (Preimage resistant) - Hash(x) = Hash..
Introduction이었던 1강처럼 비트코인에 대한 이야기는 많이 하지 않았다. 돈의 역사를 훑으면서 어떤 특징이 있었나를 살펴봤다. + 학생들과의 discussion 초기에는 Non Metal Money를 이용하였다. 에티오피아의 소금 바, 나이지리아의 개오지(Cowrie shell), Yap의 Rai Stone, 영국의 Tally Stick이 예로 나왔다. 영국의 Tally Stick을 제외하면 초기의 화폐는 희소성이 있다는 것이 특징이었다. 이후 사회가 발전하면서 Metal Money, Paper Money가 나오게 되었다. 함께 나온 개념 중 중요한 개념은 Ledger이다. 각 Transaction들을 적힌 account들의 모음이다. account는 debit이나 credit, Balance ..
출처 : 처음 배우는 블록체인 (한빛미디어) 타임스탬프 화폐 거래에서 거래 사실을 증명하기 위해서 필요하다. 각 거래의 앞 뒤 관계를 알리고, 사실을 증명하는데 사용함 중앙 집중형 시스템의 경우 중앙에서 관리하는 타임스탬프를 사용하면 되니 비교적 관리하기가 쉬움 절대 시각을 사용하지 않고 앞뒤 순서를 구분할 수 있는 상대시각을 사용하게 된다 블록체인은 암호화 해시 함수를 사용해 데이터 저장 순서를 정의한다. 해시 함수는 입력값을 구하기 어려운 일방향 함수를 사용 블록체인에서는 해시 트리와 해시 체인으로 블록을 만든다 해시 트리 기반의 블록을 해시 체인으로 묶는 것이다. 하지만 이렇게 구성한 타임스탬프 서버는 모든 노드가 항상 최신 타임스탬프를 확인할 수 없음 새로 만든 블록의 정보를 모든 노드가 공유할 ..
Functions 다중 반환 값 Go에서는 함수나 메서드가 여러 개의 값을 반환할 수 있다. func (file *File) Write(b []byte) (n int, err error) func nextInt(b []byte, i int) (int, int) { for ; i < len(b) && !isDigit(b[i]); i++ { } x := 0 for ; i < len(b) && isDigit(b[i]); i++ { x = x*10 + int(b[i]) - '0' } return x, i } Named result parameters Go 함수에서는 return에 일반 변수처럼 이름을 줄 수 있다. 이름이 지어지면, 함수가 시작될 때 0으로 초기화가 된다. 만약 함수가 인수 없이 return 구..
원글 https://golang.org/doc/effective_go Effective Go - The Go Programming Language Effective Go Introduction Go is a new language. Although it borrows ideas from existing languages, it has unusual properties that make effective Go programs different in character from programs written in its relatives. A straightforward translation of a C golang.org Formatting gofmt가 Go 프로그램을 들여쓰기, 수직 줄맞춤, 주석 refo..
참고자료 https://evan-moon.github.io/2019/10/08/what-is-http3/ HTTP/3는 왜 UDP를 선택한 것일까? 는 의 세 번째 메이저 버전으로, 기존의 HTTP/1, HTTP/2와는 다르게 UDP 기반의 프로토콜인 을 사용하여 통신하는 프로토콜이다. HTTP/3와 기존 HTTP 들과 가장 큰 차이점이라면 TCP가 아닌 UDP 기반의 통 evan-moon.github.io https://ykarma1996.tistory.com/86 HTTP3 란 무엇일까 HTTP/3는 HTTP 프로토콜의 3번째 메이저 업데이트 버전이다. HTTP/2 버전이 배포된지도 약 4년 밖에 안지났는데 벌써 3버전이 배포된 것은, HTTP 프로토콜이 모든 웹 통신의 근간이 되는 프로토콜인 점, ..
참고자료 쿠버네티스 인 액션 구성 요소가 서로 통신하는 방법 쿠버네티스 시스템 구성 요소는 오직 API 서버하고만 통신한다. API 서버는 etcd와 통신하는 유일한 구성 요소. 다른 구성 요소는 API 서버를 통해 클러스터 상태를 변경한다. 쿠버네티스가 etcd를 사용하는 방법 모든 오브젝트는 API 서버가 다시 시작되거나 실패하더라도 유지하기 위해 매니페스트가 영구적으로 저장될 필요가 있다. 이룰 위해 쿠버네티스는 빠르고, 분산해서 저장되며, 일관된 key-value 저장소를 제공하는 etcd를 사용한다. 분산돼 있기 때문에 etcd 인스턴스를 실행해 고가용성과 우수한 성능을 제공할 수 있다. 구성 요소들이 API 서버를 통해 간접적으로 데이터를 읽고 쓰면서 동시성 제어와 유효성 검사 등에 이점을 얻..