2024/07 9

11_Security

Kerckoff’s 원리암호 시스템의 안정성은 key의 안정성에만 의존해야 한다.암호 알고리즘은 공개되어도 괜찮음. key만 지키면 됨Passive AttackActive Attack 공격 모델 4가지Ciphertext Only Attack공격자가 중간에서 암호문 갈취하는 거암호 알고리즘 알아내거나 로그 분석, 정보 수집, 키 알아내기 등Known Plaintext Attackbob alice가 과거에 사용했던 text 쌍을 사용하는 것Chosen Plaintext Attack공격자가 plaintext를 선택해서 bob한테 보내고 ciphertext 얻어냄. plaintext를 마음대로 조작하는 것공격자가 원하는 평문을 선택할 수 있음,Chosen Ciphertext Attack공격자가 ciphertex..

CS/Network 2024.07.24

06_Multiplexing

selecthttps://develop-rock.tistory.com/32 03_TCP ConnectionsTCP connection overviewaccept()를 호출하면 새로운 connect 요청이 들어올 때까지 프로그램 실행이 block 됨recv를 호출하면 읽을 수 있는 새로운 데이터가 들어올 때까지 프로그램 실행이 block 됨 blocking의develop-rock.tistory.com epoll()select()는 관찰 대상에 대한 정보가 매번 전달되어야 함→ epoll()로 해결select()로 100개 이상의 소켓은 무리임(100개의 array를 OS에게 return 해야 하니까)전체 fd를 대상으로 하는 루프가 없어서 상태 변경을 확인하기 쉬움select()에 해당하는 epoll_wa..

CS/Network 2024.07.24

05_Thread

프로세스 vs 스레드프로세스: 운영체제로부터 자원을 할당받는 작업의 단위스레드: 프로세스에 할당된 자원을 사용하는 실행 흐름의 단위(하나의 프로세스 안에서 발생)Memory Space프로세스: 프로세스마다 독립된 메모리 공간을 가짐스레드: 부모 프로세스의 메모리 공간을 공유함Creation Overhead프로세스: 각 프로세스마다 고유한 메모리 공간과 자원을 할당하기 때문에 비용이 상대적으로 높음스레드: 프로세스의 자원을 공유해서 사용하기 때문에 비용이 상대적으로 낮음Resource Sharing프로세스: 프로세스 간 IPC 없이 자원 공유 불가능스레드: 메모리, 파일 디스크립터 등 프로세스의 자원을 다 같이 공유하여 사용 스레드프로세스 안에서 생성됨 프로세스의 메모리 할당 구조Code 영역: 프로그램 ..

CS/Network 2024.07.24

04_Multiprocess

Multi-connection Server서버는 connection 요청을 보내온 모든 client와 동시에 서비스 해야함Multiplexing-based server: 입출력 대상을 grouping하여 서비스Multiprocess-based server: 다중 프로세스로 서비스Multi-threading-based server: client 수만큼 스레드 만들어서 서비스 fork()#include pid_t fork()새로운 프로세스를 생성하는 함수fork()를 호출한 프로세스가 복사됨fork() 호출 이후로 각 프로세스는 독립적으로 실행리턴값성공 부모 프로세스라면: 자식 프로세스의 pid 자식 프로세스라면: 0실패: -1 자식 프로세스가 터지면? - wait()자식 프로세스가 terminate되면 부..

CS/Network 2024.07.24

03_TCP Connections

TCP connection overviewaccept()를 호출하면 새로운 connect 요청이 들어올 때까지 프로그램 실행이 block 됨recv를 호출하면 읽을 수 있는 새로운 데이터가 들어올 때까지 프로그램 실행이 block 됨 blocking의 문제점만약 여러 서버, 클라이언트가 통신하는 상황에서(서버 입장) recv()를 호출하여 새로운 데이터가 들어올 때까지 프로그램 실행이 block 된다면? → block 상태로 데이터 수신을 대기하는 동안 다른 client의 요청을 처리하지 못함(client 입장) 여러 탭에서 각각의 웹페이지를 병렬로 로드해야 하는데 block되면 동시에 여러 웹페이지, 이미지, 리소스 등을 화면에 띄우는 것이 불가능함—> 여러 connection을 동시에 처리할 수 있는..

CS/Network 2024.07.24

02_Socket_IO

Socket is defined by a 5-tuplee.g., 2개의 브라우저가 example.com의 80번 포트에 동시접속 하는 경우Local IP address: 브라우저를 실행한 컴퓨터의 IP 주소Local port: 각 브라우저의 인스턴스의 로컬 포트번호Remote IP address: example.com의 IP주소Remote port: 80Protocol(TCP or UDP): TCP→ 두 브라우저의 소켓에서 Local IP, Remote IP, Remote port, Protocol 값은 똑같음 UNIX 시스템 콜 - open, read, write, closeOpen()int open (const char* Path, int flags);Path: open 하려는 파일의 pathname..

CS/Network 2024.07.23

SOLID

[SE.A02] SOLID1. SOLID 로버트 마틴이 객체지향프로그래밍 및 설계의 다섯 가지 기본 원칙을 소개한 것이다. 원칙을 지킴으로써 코드 수정 및 구조 변경을 유연하게 할 수 있다. SOLID 는 함수와 데이터 구조를 클래스로 배치하는 방법과 이들 클래스를 서로 결합하는 방법을 설명한다. SOLID 의 5 대 원칙을 나열하면 다음과 같다. - SRP(Single Responsibility Principle) 단일 책임 원칙 - OCP(Open/Closed Principle) 개방-폐쇄 원칙 - LSP(Liskov Substitution Principle) 리스코프 치환 원칙 - ISP(Interface Segregation Principle) 인터페이스 분리 원칙 - DIP(Dependency ..

No Silver Bullet - Essence and Accident in Software Engineering 논문 요약

[SE.A.01] “No Silver Bullet —Essence and Accident in  Software Engineering 에 대한 요약 [Summary of No Silver Bullet —Essence  and Accident in Software Engineering]”  1. 서론 “한 번에 완벽한 해결책은 없다.” 늑대인간은 친숙한 모습에서 무서운 모습으로 예상치 못하게 변하는 특징이 있다. 은총알은 늑대인간을 한 번에 무너뜨릴 수 있는 무기이다. 친숙한 소프트웨어 프로젝트도 간단해보이지만 일정이 어긋나고, 예산이 부족하고, 결함이 생기면 공포스러운 괴물의 모습으로 변하는 특징을 가진다. 그래서 은총알처럼 소프트웨어의 비용을 빠르게 낮춰줄 하드웨어가 필요하다. 하지만 저자는 향후 10..

PyTorch Basics

1. view와 reshape- view와 reshape은 contiguity 보장의 차이a = torch.zeros(3, 2)b = a.view(2, 3)a.fill_(1)a = torch.zeros(3, 2)b = a.t().reshape(6)a.fill_(1)  2. squeeze와 unsqueeze- squeeze: 차원의 개수가 1인 차원을 삭제 - unsqueeze: 차원의 개수가 1인 차원을 추가 3. mm- 행벡터 * 열벡터 연산(내적)은 dot을 사용- 단, 행렬*행렬 연산(행렬곱셈)은 mm을 사용한다는 차이가 존재 - mm: 벡터 간 연산을 지원하지 X  4. matmul의 브로드캐스트a = torch.rand(5, 2, 3)b = torch.rand(5)a.mm(b)- mm은 위 ma..

Tech/PyTorch 2024.07.03