전체 글
-
네트워크 보안 - 2 | 고전 암호컴퓨터 공학/보안 2022. 9. 24. 17:53
암호학(Cryptology) 이전 포스트에서 정보보안의 3가지 요소인 CIA를 소개했었다. 이때 기밀성(Confidentiality)과 무결성(Integrity)의 경우, 암호화를 통해 그 목적을 달성할 수 있었다. 따라서 보안을 위해서라면 암호학을 공부하게 되는 것은 사실상 필수적인 과정이라 할 수 있을 것이다. 다만, 실제 현대 암호학의 경우 복잡한 수학적인 이론이 동반되는 경우가 많기 때문에, 단순 네트워크 보안을 위해 암호학을 공부하려는 사람들에게는 너무 깊이 들어가는 것이 너무 어렵고, 비효율적일 수 있다. 이러한 이유로 먼저 깊은 수학적인 지식이 없어도 직관적으로 이해 가능한 고전 암호에 대해 먼저 살펴본 다음, 현대에서 실제 사용하고 있는 암호화 방법에 대해 알아보도록 한다. 암호의 개본 개..
-
자료구조 - 3 | 알고리즘컴퓨터 공학/자료구조 2022. 9. 17. 16:44
알고리즘의 이해 알고리즘 문제 해결 방법을 추상화하여 단계적 절차를 논리적으로 기술해 놓은 명세서 알고리즘이란 컴퓨터가 특정 문제를 해결하기 위한 절차나 방법을 논리적으로 설명하는 과정 또는 명세서를 말한다. 컴퓨터 프로그램은 굉장히 많은 종류가 있는데, 각각은 모두 만들어진 목적이 다르다. 즉, 해당 프로그램을 이용해서 실현할 수 있는 결과가 다 다르다는 것인데, 이를 위해 각 프로그램에는 각자에 맞는 알고리즘이 사용된다. 일상생활에서 간단한 예시를 들어보자면, 요리 레시피가 알고리즘의 한 예라고 볼 수 있다. 요리 레시피에는 요리 재료와, 해당 재료를 이용해 어떠한 순서로 요리를 진행하는지 알려주는 부분이 있다. 여기서 재료에 해당하는 부분이 데이터(자료)에 해당할 것이고, 해당 자료를 어떠한 순서와..
-
FontAwesome with React기타/메모장 2022. 9. 16. 12:47
SVG Core npm i --save @fortawesome/fontawesome-svg-core Add Icon Package npm i --save @fortawesome/free-solid-svg-icons npm i --save @fortawesome/free-regular-svg-icons Add the React Component npm i --save @fortawesome/react-fontawesome@latest Total npm i --save @fortawesome/fontawesome-svg-core @fortawesome/free-solid-svg-icons @fortawesome/free-regular-svg-icons @fortawesome/react-fontawesome@..
-
자료구조 - 2 | 자료의 표현컴퓨터 공학/자료구조 2022. 9. 11. 01:32
디지털 시스템에서의 자료 표현 컴퓨터에서는 숫자, 문자, 그림, 소리 등의 모든 형식의 자료를 내부적으로 2진수 코드로 변환하여 저장하고 처리한다. 여기서 말하는 2진수 코드란 0과 1의 조합으로 이루어진 코드를 의미하며, 이때 0 또는 1을 나타내는 기본적인 단위를 비트라고 한다. 즉, 디지털 시스템에서는 어떠한 형태의 자료든지 0 또는 1로 이루어진 비트단위로 정보를 처리하게 된다. 따라서 만약 n개의 비트가 존재한다면, 이를 이용해 2^n개의 상태를 표현할 수 있다. 컴퓨터 내부에서 표현할 수 있는 자료 컴퓨터 내부에서 이러한 2진수 방식을 이용해 표현할 수 있는 자료의 형태는 다음과 같다. 수치 자료 문자 자료 논리 자료 포인터 자료 문자열 자료 이에 관한 자세한 내용은 아래에서 순차적으로 확인할..
-
자료구조 - 1 | 자료의 분류컴퓨터 공학/자료구조 2022. 9. 10. 21:42
자료구조의 개념 자료구조란, 자료(Data)를 효율적으로 표현하고 저장하고 처리할 수 있도록 정리하는 것으로, 일종의 정리정돈을 하는 방식에 대한 개념이다. 컴퓨터 프로그래밍에서 문제를 효율적으로 처리하기 위해서는, 해당 문제를 정의하고 분석하여 그에 대한 최적의 프로그램을 작성해야 할 필요가 있다. 이때 문제에 대한 처리 방식을 결정하는 것이 알고리즘에 관한 것이라면, 문제에 대한 처리 대상을 결정하는 것은 자료 정의에 관한 것이다. 따라서 처리할 자료의 구조에 대한 개념과 활용 능력이 반드시 필요하다고 볼 수 있다. 자료의 형태에 따른 분류 자료는 그 형태에 따라 분류할 수 있는데, 크게 아래의 4가지 구조로 나눌 수 있다. 단순 구조 단순 구조는 컴퓨터 프로그래밍에서 가장 기본적으로 사용하는 기본 ..
-
네트워크 보안 - 1 | 보안의 기본개념과 CIA컴퓨터 공학/보안 2022. 9. 10. 15:42
정보보안이란? 역사적으로 정보라는 것은, 그 존재만으로도 중요한 가치를 가진 경우가 많았다. 따라서 서로 자격이 있는 사람들끼리만 정보를 공유하고, 다른 사람의 귀에는 들어가지 않도록 보안을 신경 쓰는 행위는, 너무나도 당연하게 동반되는 행동이었다. 이를 위해 옛사람들은 특정 정보가 담긴 문서들을 한데 모아 찾을 수 없는 공간에 숨겨두거나, 열쇠와 자물쇠와 같은 물리적인 도구들을 이용해 접근 자체를 막는 방법을 사용하였다. 또는 정보를 담은 글 자체를 제삼자가 이해하지 못할 암호문으로 작성하여, 해당 암호의 구조를 이해하고 있는 사람만 정보를 확인할 수 있도록 하는 방식을 사용하기도 하였다. 이러한 정보에 대한 보안은, 무선통신의 발전에 의해 여러 중요한 정보들이 굉장히 먼 거리까지 빠르게 전달되는 시대..
-
Git Merge기타/Git 2022. 8. 25. 01:09
Merge 기초 프로젝트를 진행하면서 각자 맡은 부분에 따라 서로 다른 branch들을 생성하다보면, 언젠가 서로 나뉜 브랜치들을 하나로 병합해야하는 순간이 오기 마련이다. 이때 Git에서는 이러한 branch끼리의 병합(Merge)을 어떠한 과정으로 처리하고 해결하는지 알아보려 한다. 아래의 시나리오는 git 공식 홈페이지에서 제공하는 문서를 참고하여 작성하였다. 1. 기본적인 master branch 먼저 어떠한 branch도 사용하지 않은 상태를 나타내보았다. 각 commit은 branch의 변경없이 기본 branch인 master에 commit한 상태이다. 여기서 만약 새로운 문제를 하나 처리해야한다고 생각해보자. branch에 대한 개념이 없다면, 그냥 master branch에서 문제를 해결하..
-
Git Branch기타/Git 2022. 8. 24. 20:36
기본 개념 Git은 소스코드 관리를 위한 분산 버전 관리 시스템으로, 하나의 프로젝트를 진행할 때 여러 팀원이 다 함께 작업하는 환경에서도 원활하게 소스코드 관리를 할 수 있도록 도움을 준다. 동일한 소스코드를 가지고 팀원들은 각자 맡은 업무에 따라, 새로운 기능을 구현하거나, 기존의 버그를 고치거나 하는 식의 서로 다른 작업을 동시에 진행한다. 이렇게 여러 사람이 동일한 소스코드를 기반으로 해서 서로 다른 작업을 진행한다면, 이후의 결과는 진행한 작업의 수만큼 서로 다른 결과물이 나오게 된다. 따라서 여러 개발자들이 동시에 다양한 작업을 진행하기 위해서는 독립적으로 작업을 하기 위한 공간이 필요하고, 이를 branch라고 한다. 하나의 나무 기둥에서 여러 나무줄기가 뻗어 나오듯이, 하나의 소스코드에서 ..