전체 글 176

[도커] 3. 도커 구조

시대가 지날수록 배포유형이 달라지고 있다. 처음에는 하나의 os에서 직접 앱을 여러개 작동 시키는 방법이었고, 이를 가상화 하여 VM상에서 배포하는 방식을 거쳐 컨테이너 기반의 배포방식으로 발전하였다. 초기 배포방식은 App 하나가 다운되면 시스템 전체가 다운되는 문제가 있었다. 그래서 하드웨어를 가상으로 분할하여 별도의 OS에서 작동하는 VM방식으로 배포를 진행해왔다. 이 경우 8코어 cpu를 2코어 cpu 4개로 나누는 것처럼 사용하는데 이런경우 VM을 4개만 실행해도 자원 점유에 문제가 생긴다. 그래서 컨테이너 기반의 배포방식이 떠오르게 되었다. Host의 자원을 사용하며 여력이 된다면 컨테이너를 많이 띄울 수 있고 하나의 컨테이너는 다른 컨테이너에 영향을 미치지 않는다. 마이크로서비스를 지향하는 ..

[도커] 2. 도커 시작하기

이번시간에 도커를 설치하고 실행해보려고 한다. 도커는 기본적으로 리눅스 커널에서 돌아가기 때문에 리눅스가 필요하다.(window를 위한 docker desktop도 나왔다고 한다.) 기존 사용중이던 리눅스는 이미 설치가 돼 있기 때문에 aws ec2 프리티어 인스턴스를 사용하여 진행할 예정이다. 도커를 설치하기 위해 다음 명령어를 입력한다. sudo apt install -y docker.io -y 옵션은 입력하는 부분이 나오면 y를 선택해준다. 도커가 제대로 설치됐는지 확인하는 방법은 버전을 확인하면 된다. docker --version 도커 명령어 중 하나를 실행해보고자 한다. 다음 명령어는 실행중인 컨테이너 목록들을 보여준다. docker ps 권한이 없다는 메시지가 나온다. sudo를 사용해 임시..

[도커] 1. 도커란 무엇인가

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼으로 알려져 있다. 처음에는 이것이 쉽게 와닿지 않았다. 그래서 좀 쉬운 말로 설명하자면 내가 개발한 환경을 이미지 형태로 저장하여 다른 서버에서도 같은 환경으로 애플리케이션을 작동할 수 있도록 해준다. 몇 가지 사용 예시를 들어보자 1. 개발 pc와 배포 pc의 분리 보통 개발은 로컬 pc에서 진행하고 배포는 로컬 또는 클라우드 pc에서 진행한다. 대부분은 개발과 배포를 같은 곳에서 하지 않을 것이다. 버전에 민감한 라이브러리(TF는 1.x와 2.x가 호환되지 않는다!)들은 서로 버전을 맞춰줘야 하는데 이 라이브러리가 많아지면 관리하기 힘들 것이다. nodejs의 package.json이나 python의 anaconda 같은 패키지 관리 기능을 사용하여도 되..

[현대대수학] 7. 생성집합

순환군 $\langle a \rangle$는 $a$을 생성원으로 하는 부분군이었다. 6절에서는 생성원이 하나였으나 여기서는 여러 개의 생성원으로 이루어지는 부분군을 알아보고자 한다. $a, b$를 포함하는 $\langle G \rangle$의 가장 작은 부분군 $H$는 무엇일까? $... a^{-1}, a, a^2, a^3, ...,b^{-1} b, b^1, b^2, ...$도 있어야 하고 $ab, a^2b, a^3b, ..., ab^2, a^2b^2, ...$도 있어야 하며 $aba, abab, abab^2, a^2b^{-1}a^3$같은 경우도 포함해야 할 것이다.(가환이라는 보장이 없기 때문) 이를 정리해보면 다음과 같이 나올것이다. $\langle a, b \rangle = \{ a^{n_1}b^{..

[현대대수학] 6. 순환군

순환군 $G$가 군이고 $a \in G$일때 $H=\{ a^n | n \in \mathbb{Z}\}$인 군 $H$는 $G$의 부분군이며 a에 의해서 생성되는 G의 순환 부분군(cyclic subgroup $\langle a \rangle$ of generated by $a$)이다. 또한 $H$는 $a$를 포함하는 $G$의 가장 작은 부분군이다. $a$는 $H$의 생성원(generator of $G$)이며 군 $H=\langle a \rangle$는 순환적(cyclic)이라고 한다. 순환군의 성질 1. 모든 순환군은 가환이다. 2. 순환군의 부분군은 순환적이다. 3. $G = \langle a \rangle$라 할때 $G$는 $\mathbb{Z}$나 $\mathbb{Z_n}$과 동형이다. 4. $G = \..

[현대대수학] 5. 부분군

지금까지는 이항연산의 예를 들기 위해 $*$기호를 사용하였지만 앞으로는 기호를 다음과 같이 표기하기로 한다. 군(Group) 아벨군(Abelian group) $a*b$ $ab$ $a+b$ 항등원 $1$ $0$ 역원 $a^{-1}$ $-a$ $\overbrace{a*a*\cdots *a}^{\rm n}$ $ a^n = \overbrace{aa\cdots a}^{\rm n}$ $ na = \overbrace{a+a+\cdots +a}^{\rm n}$ 단순 덧셈, 곱셈기호같이 보이지만 실제로 덧셈, 곱셈의 역할을 하는 것은 아니다. 군에서의 이항연산을 표기만 저렇게 하는 것이다.(생각보다 편리한 부분이 많은 것 같다.) 위수 군$G$에 속하는 원소의 개수를 $G$의 위수(order) $|G|$라고 한다. 부..

[현대대수학] 4. 군

군 군(Group) $\langle G, *\rangle $는 이항연산 $*$아래에 닫혀있고 다음 공리를 만족하는 집합 $G$이다. $\mathcal{G_1}$: 모든 $a,b,c \in G$에 대해 $(a*b)*c=a*(b*c)$을 가진다. (결합법칙) $\mathcal{G_2}$: 모든 $x \in G$에 대해 $e*x=x*e=x$인 $e \in G$가 존재한다. ($*$에 대한 항등원의 존재) $\mathcal{G_3}$: $a \in G$에 대응하는 $a'*a=a*a'=e$인 $a' \in G$가 존재한다.($a$의 역원 존재) 특히 군이면서 연산 $*$가 가환인경우 Abel군(Abelian group)이라고 한다. 즉 군이란 결합법칙, 항등원, 각 원소에 대한 역원을 가진 이항연산을 갖춘 집합이..

[현대대수학] 3. 동형 이항구조

이항 대수적 구조 지금까지 "연산을 집합 $S$에 대하여 이항연산 $*$가 있을 때..."라고 표현을 했다. 앞으로 이를 간략화 하여 $(S, *)$로 표기하고 이항 대수적 구조(binary algebraic structure)라고 부른다. $(\mathbb{R},+)$같은 경우는 실수의 덧셈 연산에 대한 이항 대수적 구조라고 보면 된다. 동형 이항 구조 두 이항구조가 구조적으로 같기 위해서는 다음 조건을 만족해야 한다. 두 이항구조 $(S, *), (S', *'), x \in S, x' \in S'$에서 만약 $x \leftrightarrow x', y \leftrightarrow y'$이면 $ x*y \leftrightarrow x' *' y'$인 일대일 대응관계를 만족해야 한다. 여기서 $x \le..

[현대대수학] 2. 이항연산

이항연산(binary operation) 어떤 집합 $S$에서 이항연산 $*$가 $S \times S \rightarrow S$인 사상이다. 순서쌍 $(a,b)\in S \times S$에 대해 $S$의 원소 $*((a,b))=a*b$로 나타낸다. 이를 우리가 평소 하던 실수 덧셈에 대입해 보자면 $S = \mathbb{R}, *=+$ 가 된다. 이항연산에서 핵심은 순서쌍의 집합과 연산 결과의 집합이 같아야 한다는 것이다. 이를테면 다음은 이항연산이 아니다. $S = \mathbb{Z^+}, *=-$ $a=1, b=3$을 선택할 경우 $a-b=-2$가 되어 $\mathbb{Z^+}$에 포함되지 않기 때문이다. 유도된 연산(induced operation) $*$가 $S$위에서 이항연산이고 $H \subs..