순수 함수
순수 함수는 함수형 프로그래밍에서 동일한 입력에 대해 항상 동일한 출력을 반환하는 함수를 일컫는 말이다. 어떤 상황에서도 반환값이 일관되어 예측 가능한 동작을 보장한다. 두 가지 조건을 만족하면 순수 함수이다: 동일한 입력은 항상 동일한 출력을 반환: 함수의 인자로 주어진 값만을 사용하여 결과를 계산한다. 함수는 함수 외부의 상태값을...
순수 함수는 함수형 프로그래밍에서 동일한 입력에 대해 항상 동일한 출력을 반환하는 함수를 일컫는 말이다. 어떤 상황에서도 반환값이 일관되어 예측 가능한 동작을 보장한다. 두 가지 조건을 만족하면 순수 함수이다: 동일한 입력은 항상 동일한 출력을 반환: 함수의 인자로 주어진 값만을 사용하여 결과를 계산한다. 함수는 함수 외부의 상태값을...
int y; 1 = y; // error 코딩 학원에서 학생들에게 프로그래밍을 가르치다보면, 학생들은 리터럴 값을 좌측에, 변수 선언을 우측에 배치하곤 한다. [1 = y] 방정식을 사용하면서 숫자 값이 식의 좌변에 위치하는 것이 익숙하지는 않더라도, 수학에서 좌우변의 위치는 큰 의미가 없다. 때문에 같은 행동을 코드 작성에서 반복하는 것이다...
〈컴퓨터정보보안〉 수업 노트 RSA는 GCHQ의 Clifford Cocks, MIT의 Ronald Rivest, Adi Shamir, Leonard Adleman이 개발한 공개키 암호화 알고리즘(GCHQ와 MIT 각각 독립적으로 개발)이다. 기본적인 원리는 두 개의 큰 소수를 곱해 만든 수를 공개키로 사용하고, 이 수의 소인수분해가 어렵다는 점...
〈컴퓨터정보보안〉 수업 노트 퍼블릭 키 암호화(Public Key Cipher) 혹은 비대칭 암호화는 두 개의 키를 사용해 하나는 암호화, 다른 하나는 복호화에 사용하는 암호화 방식을 의미한다. 이 방법은 두 가지 사용 사례를 가지고 있는데, 암호화 외에도 디지털 서명에도 사용된다. 암호화 시나리오에서는 평문 $M$ 을 암호화해 암호문 $C$ ...
프로그램은 운영체제가 프로세스를 구동하는데 사용되는 executable 한 파일이다. 프로그램들은 메모리에 로드되어 프로세스가 된다. 프로그램은 로더에 의해 메모리에 적재된다. 메모리는 어디에 어떻게 적재하는가? 프로그램의 크기가 매우 커 물리 메모리가 감당하기 어렵다면? 컨택스트 스위칭이 suspend에 걸쳐 이루어진다면? 프로세스...
〈네트워크시스템〉 과제 노트 ShapeLayer/simple-irc Simple IRC는 이름과는 다르게 IRC를 구현한 것은 아니다. 실시간 다중 사용자 채팅의 구현일 뿐이다. socket, bind, listen 사용의 기초적인 예제라고 할 수 있다. 서버 측 초기화 server/src/server_sess.c:40-51: void s...
LLM 관련해 개인 연구를 하면서 상대적으로 저사양의 컴퓨팅 보드 위에서 LLM을 운용하는 시도를 할 필요가 생겼다. 이를 위해 6TOPS NPU가 들어있는 락칩 RK3588에 소요가 생겼고, 알리에서 25만원에 오렌지파이5 8GB, 5만원에 128GB M.2 2230 NVMe SSD를 가져왔다. 불과 작년까지만 하더라도 오렌지파이5 Max 16...
〈컴퓨터정보보안〉 수업 노트 Cipher 과정에서 평문을 어떤 단위로 암호화하는지에 따라, Cipher는 혼동(i.e. one-time pad)만 발생시킬수도, 혼동과 확산을 모두 발생(i.e. codebook)시킬 수도 있었다. 전자의 대표적인 예 one-time pad와 후자의 대표적인 예 codebook 방법을 일반화하여, 암호화 과정을 ...
〈컴퓨터정보보안〉 수업 노트 DES는 1970년대 개발되어 미 연방 정부 표준으로 채택된 블록 암호화 방법이다. IBM의 Lucifer 방법을 기반으로 설계되었다. 64비트의 평문 블록을 16라운드의 Feistel 구조로 암호화한다. 키 역시 블록 크기와 동일한 64비트이나 키의 유효한 부분은 56비트인데, 남은 8비트는 패러티 비트이다. ...
〈컴퓨터정보보안〉 수업 노트 Advanced Encryption Standard(AES)는 DES의 를 대체하기 위해 만든 블록 암호화 표준이다. DES와 같이 반복 블록 암호화 방법을 사용하지만, DES와 달리 Feistel 구조를 사용하지 않는다. 블록 크기: 128비트 키 크기: 128, 192, 256비트 라운드 수: 10,...