전체 글
함수적 종속 (Functional Dependency)
개념함수적 종속이란 어떤 릴레이션 R이 있을때 X와 Y를 각각 속성의 부분집합이라고 가정해보자. 여기서 X의 값을 알면 Y의 값을 바로 식별할 수 있고, X의 값에 Y의 값이 달라질 때, Y는 X에 함수적 종속이라고 한다. 이 경우 X를 결정자, Y를 종속자라고 한다. 이를 기호로 표현하면 X→Y이다. 이런 함수적 종속관계에는 완전 함수적 종속과 부분 함수적 종속 및 이행적 함수 종속이 있다. 이 릴레이션에서는 '학번'을 알면 '이름', '나이', '성별' 속성을 식별할 수 있으며, '힉번'이 다르면 그에따른 값도 다르다. 따라서 '이름', '나이', '성별' 속성은 '힉번'에 함수적인 종속관계다. 같은 이유로 전공 속성또한 '전공코드'에 함수적인 종속관계에 있다.학번→이름, 학번→나이, 학번→성별1) ..
블록 암호 모드 (CFB, OFB, CTR)
CFB 모드CBC 모드와 CFB 모드 비교● Cipher FeedBack 모드(암호 피드백 모드) -> 피드백(FeedBack): 암호화 입력의 사용 의미 ● CFB 모드에서는 1단계 앞의 암호문 블록을 암호알고리즘의 입력으로 사용 초기화 벡터최초의 암호문 블록을 만들어낼 때는 1단계 앞의 출력이 존재하지 않으므로 대신에 IV를 사용'CFB 모드는 평문 블록과 암호문 블록 사이에 오직 XOR만 있음 CFB 모드와 스트림 암호CFP 모드는 평문 블록과 암호문 출력의 XOR를 이용 암호문을 생성XOR에 의한 암호화와 비슷 (일회용 패드 : 평문 XOR 랜덤 비트열) 키 스트림 (Key Stream)CFB 모드에서 암호 알고리즘이 생성하는 비트열키 스트림을 생성하기 위한 의사 난수 생성기로서 암호 알고리즘을..
사용자 인증(Authentication)과 권한 부여(Authorization)에 대한 이해
인증과 권한 부여의 차이사용자 인증 - 컴퓨터 보안에서 말하는 인증이란 어떤 실체가 그 실체가 맞는지 확인하는 것이다.여기에는 4가지 유형이 있다. 지식 기반 인증(What you know) • 고객이 알고있는 정보 기반으로 인증 • 비밀번호 등 • 유추가 가능하고 유출의 우려가 있음 소유 기반 인증(What you have) • 고객이 소유하고 있는 것을 기반으로 인증 • 공인인증서, 시크리트 카드, OTP, 문자인증 등 • 지식 기반 인증과 함께 사용되면 강력함 • 복제/분실의 우려 존재 생체(존재) 기반 인증(What you are) • 고객이 가지고 있는 고유한 생체적 특징을 기반으로 인증 • 지문인증, 홍체인증 등 • 분실이나..
테스트 기법 (화이트박스 / 블랙박스)
1. 화이트 박스 테스트 (White Box Test)화이트 박스 테스트는 모듈의 원시 코드를 오픈시킨 상태에서 코드의 논리적 모든 경로를 테스트 하는 방법이다.Source Code의 모든 문장을 한 번 이상 수행하여 모듈 안의 작동을 직접 관찰할 수 있다.산출물의 기능별로 적절한 프로그램의 제어 구조에 따라 선택, 반복 등의 부분들을 수행함으로써 논리적 경로를 점검한다.테스트 데이터를 이용해 실제 프로그램을 실행함으로써 오류를 찾는 동적 테스트 (Dynamic Test)에 해당한다.테스트 종류기초 경로 검사 (Basic Path Testing) : 기초 경로는 수행 가능한 모든 경로를 의미하며, Mocabe의 순환 복잡도를 사용하여 선형 독립 경로 수를 결정한 다음 얻어진 각 경로에 대한 테스트 사례를..
휴리스틱 알고리즘 (Heuristic Algorithm)
우리가 문제 해결 시 흔히 사용하는 동적 계획법(DP) 또는 분할 정복과 같은 완전 탐색에 기초한 디자인 패러다임은 사실 실생활에서 쓰기엔 매우 한정적이다. 예를 들어, 인공지능 체스 프로그램을 알고리즘으로 짠다고 할 때 우리가 가장 먼저 떠올릴 수 있는 것은브루트 포스(brute force) 방식이다. 즉, 가능한 모든 말의 움직임을 다 해보는 것이다. 하지만 이 방식은 어림도 없는게 움직일 수 있는 말과 이동 가능한 칸이 너무 많기 때문에 만약 이 방식으로 프로그램을 개발했다고 하면, 죽을 때까지 게임이 끝나지 않을 것이다. (경우의 수가 10^120 가지라고 한다.)그렇다고 해서 분할 정복 기법을 사용하자니 적절한 분할 방법이 생각나질 않고 동적 계획법을 사용하자니 메모리가 턱없이 모자르다. 결국 ..
SDN (Software Defined Network) 이란?
SDN이란?SDN(Software Defined Network)이란 소프트웨어를 통해 네트워크 리소스를 가상화하고 추상화하는 네트워크 인프라에 대한 접근 방식을 의미한다. 조금 더 쉽게 설명하자면, 소프트웨어 애플리케이션과 API를 이용하여 네트워크를 프로그래밍하고, 중앙에서 전체 네트워크를 제어하고 관리하는 것이다.작동 방식SDN에서 가장 핵심은 네트워크 장비의 Control Plane(제어부)와 Data Plane(전송부)의 분리이다.Control Plane은 네트워크 장비를 제어하는 뇌에 해당하고, Data Plane은 데이터를 전송하는 역할을 하는 것이다. 기존의 라우터(Router)라는 네트워크 장비에는 제어부와 전송부가 같이 존재한다. 제어부에서 최적의 경로를 계산하고 전송부가 데이터를 전송하..
알고리즘과 휴리스틱의 차이
테스트 케이스의 효율성소프트웨어의 높은 품질을 위해 테스트를 진행할 때, 테스트 케이스를 작성하여 이에 따라 테스트를 실행하고, 실패율로 품질을 측정하는 방식을 선택하는 회사들이 많다. 하지만 현재까지 제품의 모든 경우의 수가 고려되고 전부 테스트 케이스로 옮겨지는 것은 사실상 현실적으로 불가능하며, 이러한 부분은 따라서 수치로 계산되지 못한다. 그렇다면, 이러한 테스트 결과 수치가 소프트웨어의 품질을 증명한다고 할 수 있을까? 테스트 케이스는 시간이 지나며 제품의 기능이 발전하고 늘어날 수록, 같이 늘어난다. 그만큼 테스트 수행 시간도 늘어나기 때문에, 결국 부분적 회귀 테스트를 테스트 전략을 많이 선택한다. 이러다 보면, 오랫동안 건드려지지 않는 위험요소가 적은 부분도 있을 테고, 그 부분의 테스..
[브4] 13136 - Do Not Touch Anything
다른 재밌는 문제int main(){ long r, c, n; cin >> r >> c >> n; cout
[브5] 20492 - 세금
식이 재밌어서 남김int main(){ long n; cin >> n; int ans1 = n * 0.78; int ans2 = n * 0.8 + (n * 0.2 * 0.78); cout
[Python] enum형
선언하기from enum import Enumclass Color(Enum): RED = 1 GREEN = 2 BLUE = 3print(type(Color.GREEN))print(Color.GREEN)print(Color.GREEN.name)// 출력Color.GREENGREEN반복하기 (이터레이션 지원)from enum import Enumclass Color(Enum): RED = 1 GREEN = 2 BLUE = 3 for color in Color: print(color) // 출력Color.REDColor.GREENColor.BLUE자동 값 사용하기 (auto)from enum import Enum, autoclass Color(Enum): ..