CS

CS/HCI 윈도우즈프로그래밍

[OpenGL] 2. Open GL 개념

Graphics API Open GL 프로그래밍에 앞서 Graphics API 에 대해 정리하고자 한다. 그래픽 API는 말 그대로 그래픽 작업을 하는데 필요한 주요 기능을 추상화하여 API로 제공해주는 도구를 말한다. 그래픽 어플리케이션을 만든다면 사용자가 이 어플리케이션과 상호작용할 때 결국 키보드도 쓰고 마우스도 쓰고, 컴퓨터는 화면을 그리기 위해 그래픽카드도 사용하고 할텐데, 그런 하드웨어와 프로그램 사이에 정보를 주고받을 수 있는 중간 통로 역할을 하게 된다. 보통 3차원을 그리기 위해서 Graphics API를 사용할텐데, 이때 크게 High Level API 와 Low Level API로 나뉘어진다. High Level API 프로그래머 친화적인 방식이다. 어떤 그림을 그리기 위한 자세한 과..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 1. GLFW, GLAD 환경설정

2시간의 삽질 끝에 성공한 GLFW, GLAD 환경설정 과정을 정리한다. 개발환경 세팅이 언제나 제일 어렵다.. GLFW 설치 GLFW (Graphics Library Framework) 는 OpenGL에서 데스크톱 개발을 하기 위한 도구를 제공한다. 그래픽스 개념을 적용하여 어플리케이션을 만드는 도구이다. 학교 강의록에서는 교수님이 CMake를 설치하고 직접 GLFW 파일을 빌드하여 사용하는 것을 알려주셨다. https://www.glfw.org/download.html Download GLFW source code and binary distribution download links. www.glfw.org 그대로 따라하면서 계속 뭔가 막혀서 답답했는데 이 사이트에 가면 이미 빌드된 파일을 함께 제공..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 4. Network Core : Internet Structure

Internet Structure첫번째 글에서 인터넷은 infrastructure 로서의 기능도 수행한다고 하였다.그렇다면 전 세계에 깔려있는 인터넷(Internet)은 어떤 구조로 구성되어 있을까? 인터넷의 구성을 다시 한번 복기해보자.네트워크 엣지에는 host, access network, physical link 가 있었다.네트워크 코어에는 ISP 와 각종 라우터가 있었다. 네트워크 엣지에 존재하는 host는 ISP의 access network 를 통해 ISP의 네트워크와 연결된다.그리고 다시 ISP도 서로서로 연결되어있다.KT통신망을 쓰는 사람과 STK 통신망을 쓰는 사람이 서로 연락이 가능한 것도 그 이유이다.따라서 어떤 ISP에 연결만 되어있다면, 그 사람은 전 세계 모든 ..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 3. Network Core : Packet Switching

네트워크는 Network Edge 와 Network Core 로 구성되어 있다. Network Edge는 크게 Host와 Host가 접근하는 가장 가까운 네트워크인 Access Network, 그리고 이들 사이를 연결하는 Physical Link로 이루어져있다. 이제 Network Core에 대해 정리해보자. Network Core, Forwarding, Routing 네트워크 코어는 라우터들이 서로 연결되어있는 mesh (그물망) 형태의 모양이다. mesh 라고 하면, 정형화 되어있는 (특정한 형태가 있는) 모양이 아닌, 얼기설기 얽힌 모양을 뜻한다. host의 어플리케이션이 보낸 메세지가 패킷으로 잘게 나뉘면, 이 패킷은 physical link를 타고 네트워크 코어에 있는 라우터로 들어간다. 호스트..

CS/컴퓨터 구조

[컴퓨터 구조] 1. MIPS Instruction & Register

컴퓨터 구조 수업의 목표는 MIPS CPU를 직접 디자인하는 것이다. CPU를 디자인하기 전에, 먼저 MIPS CPU가 이해하고 사용할 수 있는 명령어에 대해 정리하자. Instruction (명령어) Instruction 컴퓨터가 사용하는 단어를 가리킨다. 만약 외국인과 대화를 하고 싶다면, 나는 그 외국인의 언어를 사용할 줄 알아야한다. 마찬가지로, 우리가 컴퓨터와 대화하기 위해서는 컴퓨터의 언어를 사용할 줄 알아야 한다. instruction은 컴퓨터와 대화할 때 사용하는 단어 하나를 가리킨다. Instruction Set 컴퓨터가 사용하는 어휘 (단어들의 집합) 을 가리킨다. 정확하게는 CPU가 이해하는 단어의 집합을 가리킨다. 따라서 CPU가 달라지면 컴퓨터가 이해하는 언어가 달라진다. CISC..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 2. Network Edge

Internet 구조에 대해 더 깊게 살펴보자.Network는 크게 Network Edge와 Nework Core로 나누어져 있다.이번 글에서는 Network Edge가 무엇인지와 Network Edge의 구성 요소에 대해 정리하고자 한다.Network Edge지난 글에서 정리한대로 네트워크 엣지는 네트워크 망의 바깥, 네트워크를 활용하는 주체들과 관련된 영역이다.Network Edge를 구성하는 요소는 크게 Host, Access Networks, Physical Media 가 있다. Host호스트는 쉽게 말해 '디바이스' 이다.보통 서버-클라이언트 패러다임 상에서 데이터를 요청하는 존재인 클라이언트와 데이터를 제공하는 존재인 서버로 구성된다. Host는 네트워크를 통해 데이터를 주..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 1. 인터넷과 프로토콜

1. 인터넷 Internet vs internet 두 용어는 엄밀하게 서로 다른 용어이다. Internet 은 우리가 일상생활에서 사용하는, 전세계 사람들과 만나는 통로가 되는 인터넷을 의미한다. 일상에서 '거기 인터넷 잘 돼?' 라고 물어볼 때 사용하는 그 '인터넷' 을 의미하는 고유명사이다. internet 은 조금 더 기술적인 의미로서, inter networking 의 줄임말이다. 네트워크와 네트워크 사이의 네트워크 (network of networks) 를 의미하는 용도로 사용한다. 예를 들어 군대에서는 외부 인터넷(Internet)과 완벽히 격리된 내부 네트워크를 사용하는데, 내부 네트워크 역시 각종 네트워크 장비를 통해 서로 다른 내부 네트워크들과 연결되어있다. (인트라넷 - C4I 와 같은..

CS/자료구조

[자료구조 및 프로그래밍] 17. 정렬의 최소 시간 복잡도

정렬의 종류별 알고리즘에 대해 정리할 때, 기수 정렬의 시간복잡도는 O(N)이 나왔었다. 그런데 일반적으로 정렬의 시간 복잡도는 O(N log N) 으로 알려져있다. 어떻게 기수 정렬은 O(N) 시간에 정렬을 할 수 있었을까? 그리고 왜 일반적으로 정렬의 시간 복잡도는 O(N log N) 으로 알려져 있는 걸까? 한번 O(n log n) 시간으로 고정되어있는 merge sort 의 comparison 과정을 tree로 표현해보자. a, b, c, d 라는 4개의 데이터에 대해 merge sort 를 수행하면, 반씩 쪼개다가 merge 하는 과정에서 비교를 수행한다. 이때 비교를 통해 정렬을 수행하는 모든 경우의 수를 comparison tree 로 그려보자. 제일 먼저 비교가 일어나는 부분은 a, b 이..

CS/자료구조

[자료구조 및 프로그래밍] 16. O(N log N)정렬 방법 별 비교 횟수, 쓰기 횟수 비교

방식의 비교횟수와 쓰기 횟수를 비교해보고자 한다. 병합 정렬 merge_sort() 함수의 호출시, 기존 배열을 복사해서 넣어놓고, 카운팅할 비교횟수와 데이터 쓰기 횟수를 초기화한다. mergeSort() 라는 재귀용 함수를 호출한다. 받은 배열을 반씩 나눠서 재귀적으로 mergeSort 를 호출하며, mergeSort 로 반씩 정렬된 결과를 다시 합쳐서 정렬할 merge 함수도 호출한다. 실질적인 정렬이 수행되는 merge 함수다. 먼저 반씩 정렬된 배열을 다른 배열에 복사해서 옮겨둔다. merge sort 를 배열롤 구현할 때 반드시 수행해야 하는 작업이기에, 이는 데이터 쓰기 횟수에 포함시켜서 카운팅했다. 그리고 기존 입력된 배열을 복사한 배열을 반씩 나눠 탐색하면서 작은값부터 채워나간다. 이 과정..

CS/자료구조

[자료구조 및 프로그래밍] 15. O(N²)정렬 방법 별 비교 횟수, 쓰기 횟수 비교

그림과 같이 100만개의 랜덤 성생된 정수가 있다. 이 정수를 각 정렬 방법으로 정렬해보려고 한다. (100만개를 N^2 시간에 정렬하면 시간이 오래 걸려서, 실제로는 100, 200, ..., 900 단위로만 정렬해 볼 것이다.) 정렬을 수행하면서, 비교는 몇번 일어나는지, 정렬을 하기 위해, 기존 배열에 (또는 새로 생성한 배열에) 데이터를 쓰는 행위를 몇번이나 하는지 횟수를 세보고자 한다. 이를 위해 먼저 100만개의 정수가 담긴 데이터를 ' ' 기준으로 끊어 배열에 저장한다. 그리고 각 정렬을 수행한다. 정렬은 사이즈가 100, 200, 300, ..., 900 인 상황을 매번 수행해보면서, 그 때의 비교횟수와 데이터 쓰기 횟수를 카운팅한다. 차례대로 정렬을 구현하고, 횟수를 카운팅한 결과를 출력..

에버듀
'CS' 카테고리의 글 목록 (18 Page)