AWS는 Amazon Web Service 의 약자이다. AWS는 개발에 있어 필요한 거의 모든 기능들을 지원한다. 그 중 대표적으로 내가 만든 제품을 사용자들에게 사용할 수 있도록 만드는 것을 배포(Deployment)라고 한다. AWS에서 배포를 하기위해 지원하는 기능중 대표적인 것들은 EC2, RDS, S3 가 있다. EC2는 Elastic Computer Cloud 의 약자로 AWS에서 원격으로 제어할 수있는 가상의 컴퓨터를 한 대 빌리는 것이다. 이곳에서 서버를 실행하거나 저장소로 사용하는 등 컴퓨팅 서비스를 제공 받을 수 있다. RDS는 Relational Database Service 의 약자로 관계형데이터베이스의 인스턴스를 생성해서 데이터들을 관리 할 수 있다. EC2를 사용하면서 그곳에 ..
네트워크통신의 순서를 살펴보면 어플리케이션 계층에서 HTTP메시지를 작성한다. 이 메시지가 전송요청이 되면 전송계층으로 넘어가 TCP 혹은 UDP의 방식으로 패킷되어 인터넷계층으로 넘어가게된다. 인터넷계층에서는 TCP로 패킷된 정보를 포함한 IP패킷을 생성해 연결계층으로 보낸다. 연결계층에서는 요청된 목적지로 보내주고 메시지를 전송하기위해 거친 단계들을 역순으로 거치면서 패킷을 하나씩 벗겨내 최종적으로 HTTP메시지를 목적지(주로 서버)의 어플리케이션 계층으로 전달한다. 요청된 사항에 대해 서버에서 응답을 HTTP메시지로 전송하고 위의 절차를 다시 응답이 완료될 때 까지 실행한다. 각 계층에서 사용되는 프로토콜의 특징을 살펴보자. HTTP의 특징은 클라이언트-서버 구조, 무상태성(Stateless), 비..
네트워크의 기본적인 구조는 클라이언트-서버 아키텍처(2티어 아키텍처)로 대표된다. 아키텍처는 구조, 건축물, 건축학 등을 뜻하는 단어이다. 2티어라는 것은 계층이 2개로 나위어진다는 것을 의미한다. 곧, 클라이언트 계층과 서버 계층으로 나뉘어지는 구조를 클라이언트-서버 아키텍처라고 표현하는 것이다. 네트워크 통신은 정보를 주고 받는 것을 목적으로 한다. 한국에 서식하는 동물의 정보를 알려주는 웹페이지가 있다고 가정하자. 이 웹페이지에서 고양이에 대한 정보를 열람하기 위해 고양이 탭을 클릭하면 고양이에 대한 정보가 웹페이지상에 나타나게 된다. 이 일련의 행위들이 네트워크의 기본적인 통신방법이다. 이를 네트워크 통신의 관점에서 보자면, 고양이 탭을 클릭하는 행위는 서버에 고양이에 대한 정보를 보내달라는 요청..
2. Graph, Tree, Binary Search Tree(BST, 이진탐색트리) 1)Graph 그래프는 직선, 곡선, 도형 등 그래픽적인 요소에 의해 시각화된 차트를 말한다. 컴퓨터과학에서 그래프는 vertex와 edge로 구성된 한정된 자료구조를 의미한다. vertex는 정점, edge는 정점과 정점을 연결하는 간선이다. 정점들과 간선들로 서로간의 관계를 표현한 자료구조라고 할 수 있다. 두 정점간에 간선이 존재한다면 두 정점은 직접적인 관계를 가지고 있고, 두 정점간에 간선은 없지만 다른 정점들을 거쳐 도달할 수 있다면 두 정점은 간접적인 관계를 가지고 있다고 할 수 있다. 그림으로 표현하자면 이렇게 표현 할 수있다. 파란원은 정점이고 각 원들 사이의 선은 간선이다. 간선중에는 한쪽으로만 화살표..
목차. 1. Stack, Queue 2. Graph, Tree, Binary Search Tree(BST, 이진탐색트리) 3. Tree traversal (트리순회) 4. Breadth-First Search(BFS, 너비우선탐색), Depth-First Search(DFS, 깊이우선탐색) 1. Stack, Queue 1) Stack Stack(이하 스택)은 '쌓다', '쌓이다' 라는 뜻을 가지고 있다. 그렇기 때문에 자료구조의 한 종류로써 스택은 데이터를 계속 해서 쌓아 놓은 것을 말한다. 예를들어 동전을 원통안에 하나씩 쌓을 경우 맨 아래의 동전을 꺼내기 위해서는 위에 쌓인 동전들을 모두 꺼내어야한다. 이처럼 데이터가 스택에 쌓여있기 때문에 가장 먼저 삽입된 데이터1을 사용하기 위해서는 뒤에 들어온 ..
클래스와 객체지향프로그래밍을 얘기 하려면 우선 절차지향프로그래밍을 언급해야한다. 이름에서 알 수 있듯이 객체지향과 절차지향은 서로 반대에 위치한 느낌을 가지고 있다. 컴퓨터가 발명되고 컴퓨터를 컨트롤 하기위해 컴퓨터가 이해할 수 있는 언어가 개발되었다. 그 언어를 사용해 컴퓨터에게 명령을 내리는데 컴퓨터는 기본적으로 명령이 내려진 순서대로 동작을 한다. 따라서 초기의 프로그래밍은 모두 절차지향프로그래밍이었다. 하지만 컴퓨터에게 명령을 내리는 주체는 사람이기때문에 사용자가 편리함을 추구하면서 나온 이론이 객체지향프로그래밍이다. 모든 데이터와 기능들을 순서대로 나열하여 실행시켰던 것에서 벗어나 코딩을 효율적, 효과적으로 하기 위해 각 기능들과 기능에 필요한 데이터들을 따로 모아 객체로 나누어 필요한 순간에 ..