구글 파일 시스템 (GFS) vs 맵리듀스(MapReduce) vs 하둡 (Hadoop)
참고자료 1 : https://swalloow.github.io/map-reduce참고자료 2 : http://sycros.tistory.com/5 구글 파일 시스템 (GFS, Google File System) Google File System은 2003년 논문을 통해 소개되었다. 이전에 구글에서 사용하던 파일 시스템은 Big File 이었는데, 구글의 데이터가 급격히 늘어남에 따라 핵심 데이터 스토리지와 구글 검색 엔진을 위해 최적화 된 파일 시스템이 필요하게 된 것 이다. GFS는 크게 하나의 master node와 여러 개의 slave node로 구성되어 있다. 기능으로 보면 Master, Chunk Server, Client로 이루어져 있다. Master: GFS 전체를 관리하고 통제하는 중앙 ..
2017.09.26
[분산알고리즘] Hadoop(하둡) 이란 ?
참고자료 1 : https://aws.amazon.com/ko/emr/details/hadoop/참고자료 2 : http://over153cm.tistory.com/entry참고자료 3 : https://www.facebook.com/참고자료 4 : http://12bme.tistory.com/70참고자료 5 : http://yookeun.github.io/java/2015/05/24/hadoop-hdfs/ 하둡이란? 대용량 데이터를 분산 처리할 수 있는 자바기반의 오픈소스 프레임 워크이다. Apache™ Hadoop®은 대규모 데이터 세트를 효율적으로 처리하는 데 사용할 수 있는 오픈 소스 소프트웨어 프로젝트이고, 하나의 대형 컴퓨터를 사용하여 데이터를 처리 및 저장하는 대신, 하둡을 사용하면 상용 하..
2017.09.26
no image
[인공지능] LIBSVM 사용법 / visual studio 2013 / c++
svm 개념 참고 ( http://eehoeskrap.tistory.com/45 ) Training Data & Lable인공지능에서 기계학습의 개념을 말해보자면 기계에게 학습을 시킬 데이터를 즉, Training Data라고 지칭한다.'사람' 이라는 데이터가 있다고 했을 때, 키, 몸무게, 입고있는 옷, 머리카락 길이 등의 정보는 '사람'이라는 데이터의 Feature 가 된다.이러한 각각의 Feature들을 지닌 100명의 사람이 있다고 가정하자100명의 사람들을 분류하고 싶을 때 분류할 수 있는 기준은 여러가지가 존재하게 된다.이 기준을 정하고 분류 했을 때 가지는 값이 바로 Label 이 된다.기준을 성별로 한다고 치자, 그러면 A는 여자다. A의 Label 값은 '여자'가 될 것이다. Class ..
2016.07.18
no image
[인공지능] SVM (Support Vector Machine, 서포트 벡터 머신)
SVM (Support Vector Machine) 서포트 벡터 머신은 인공지능의 기계학습 분야 중 하나로, 패턴인식, 자료분석을 위한 지도학습 모델이다.즉, 2개의 범주를 분류하는 이진 분류기이다. 주로 분류와 회귀 분석을 위해 사용되며, SVM 알고리즘은 주어진 데이터 집합을 바탕으로 하여 새로운 데이터가 어느 카테고리에 속할 것인지 판단하는 비확률적 이진 선형 분류 모델을 만들게 된다. SVM의 기본적인 원리는 위와 같은 사진에서 살펴 봤을 때, 흰색 바둑알과 검은색 바둑알이 학습용 데이터로 주어졌다고 하자 두 그룹에서 각각의 데이터 간 거리를 측정하여 두 개의 데이터 사이의 중심을 구한 후에 그 가운데에서 최적의 초평면(Optimal Hyper Plane)을 구함으로써 흰색과 검은색 그룹을 나누는..
2016.07.18
no image
Kruskal Algorithm and Prim Algorithm (크루스칼, 프림 알고리즘)
Kruskal Algorithm과 Prim Algorithm은 Greedy Algorithm를 적용하는 알고리즘 중의 하나이다. 최소신장트리를 구성할 때, 최적의 해를 구하려면 가중치를 낮은 간선을 선택하는 것이 좋다. 그래서 고안된게 바로 크루스칼 알고리즘이다. 크루스칼 알고리즘은 각 단계에서 가중치가 작은 간선부터 선택한다.선택하는 과정에서 사이클이 만들어질 경우 그 간선은 선택하지 않는다.그리고, 신장트리는 n개의 정점을 가질 때, 반드시 n-1개의 간선을 가지게 되어있으므로 간선이 n-1개가 되면 종료하면 된다. 크루스칼 알고리즘은 다음과 같은 사항을 고려해야한다. 1. 가중치가 작은 간선을 선택하는 데는 많은 시간이 소요되므로 모든 간선을 오름차순으로 정렬2. 깊이우선탐색(DFS), 너비우선탐색..
2016.04.11
Greedy Algorithm (탐욕 알고리즘, 그리디 알고리즘)
Greedy Algorithm은 해답에 포함될 원소들을 차례로 선택하는 과정을 거치게 되는데, 각 단계에서는 전체적인 상황을 종합적으로 판단하고, 고려하여 결정하는 것이아니라 현 시점의 정보를 바탕으로 가장 이익이 되는 원소들을 선택하는 방법이라고 할 수 있다. 복잡한 과정을 거치지 않고, 상황을 종합적으로 판단하는게 아니기 때문에 매우 빠른 알고리즘이라고 할 수 있다. 이러한 Greedy Algorithm은 '최적화 문제(optimization problem)'를 해결하기 위한 방법의 일환으로서, 예를들어 최소비용신장트리를 구하는 문제를 예로 들 수 있다. 주어진 문제에 대해 최적해를 구하는데 있어서, 문제가 부문제들로 쪼개지고, 그러한 각 부문제들의 최적해로부터 효율적으로 최적해를 구하게 될 때 Gr..
2016.04.11
no image
OpenGL 사각형그리기 예제2 - glViewport
OpenGL 사각형그리기 예제2 소스코드 #include #include #include #include void MyDisplay(){ glClear(GL_COLOR_BUFFER_BIT); // GL상태변수 설정, 프레임 버퍼를 초기화 // 초기화 될 색은 glutClearColor에서 사용된 색 glViewport(0, 0, 300, 300); glColor3f(1.0, 1.0, 1.0); // glBegin(GL_POLYGON); // 입력요소 기본정의 glVertex3f(-0.5, -0.5, 0.0); glVertex3f(0.5, -0.5, 0.0); glVertex3f(0.5, 0.5, 0.0); glVertex3f(-0.5, 0.5, 0.0); glEnd(); glFlush(); } int m..
2015.11.22
no image
OpenGL 사각형 그리기 예제
OpenGL 간단한 사각형 그리기 예제 소스코드 #include #include #include #include void MyDisplay(){ glClear(GL_COLOR_BUFFER_BIT); // 사각형은 glBegin()과 glEnd() 사이에서 정의됨 glBegin(GL_POLYGON); // 아래 제시된 Vertex들이 다각형(Polygon)을 이루고있음을 정의 // 윈도우 한가운데는(0,0,0)이며 윈도우 우상단은(1,1,0)이다. glVertex3f(-0.5, -0.5, 0.0); glVertex3f(0.5, -0.5, 0.0); glVertex3f(0.5, 0.5, 0.0); glVertex3f(-0.5, 0.5, 0.0); // 이때 Vertex로 그리는 순서는 시계 반대방향임을 주의..
2015.11.22
GLUT의 윈도우 기능
함수명 기능설명 윈도우 초기화 glutInit() 윈도우 운영체제와 세션 연결 glutInitWindowPosition() 윈도우 위치 설정 glutInitWindowSize() 윈도우 크기 설정 glutInitDisplayMode 디스플레이 모드 설정 윈도우 관리 glutSetWindowTitle() 윈도우 타이틀 설정 glutCreateWindow() 새로운 윈도우 생성 glutReshapeWindow() 크기 변경에 따른 윈도우 조정 glutPostRedisplay() 현 윈도우가 재생되어야 함을 표시 glutSwapBuffers() 현 프레임 버퍼 변경 1. glutInit(int *argc, char **argv)GLUT 라이브러리를 초기화 한 후 윈도우 시스템과 세션을 연다. 2. glutIn..
2015.11.22
[소프트웨어 공학] StateDiagram(상태 다이아그램) 이란 ?
StateCharts Diagram 이란 ? “하나의 객체를 대상으로 생존기간 동안 가질 수 있는 객체 상태의 변화를 분석한 다이어그램”이다.이 다이어그램은 객체 상태와 함께 객체 상태 변화를 유발하는 이벤트와 동작(Action/Activity)도 함께 정의한다. 이러한 요소가 정의된 StateCharts Diagram을 통해 “객체 O는 이벤트E에 의해 상태S로 변화하고 그 상태에서 A라는 행위를 한다” 라고 말할 수 있다. StateCharts Diagram을 사용하는 목적- 객체 상태변화를 상세히 분석 할 수 있다: 상태차트 다이어그램은 객체 하나를 대상으로 생성-소멸 기간 중에 다양하게 가질 수 있는 상태를 분석하는 목적으로 작성된다. 시스템에서 많은 객체들은 생성에서 소멸 단계까지 간단한 상태를..
2015.11.13
[소프트웨어 공학] 소프트웨어 테스트원칙
소프트웨어 테스트원칙 1. 테스팅은 결함이 존재함을 밝히는 활동이다- 테스팅은 결함이 없음을 증명하기 위한 활동이 아니다. 결함을 발견 해냈을 때, 그것은 성공적이라고 말할 수 있다. - 결함이 발견되지 않았다고 해서 해당 소프트웨어에 결함이 없다고 증명된 것은 아니다. 2. 완벽한 테스팅은 불가능하다.- 한 프로그램은 무한 경로, 무한 입력값, 무한 타이밍이 존재한다.- 완벽한 테스팅을 하기 위한 노력 대신, 리스크가 큰 영역에서 효율적인 테스트를 하는 것이 중요하다. 3. 테스팅은 개발 초기에 시작된다.- 테스트 활동은 소프트웨어 생명주기와 함께 하며 각 생명주기 단계의 상응하는 목적을 달성하기 위한 테스트를 수행한다.- 결함은 일찍 발견할 수록 소요되는 인적, 기간적 리소스가 줄어들고, 개발 후반부..
2015.11.08
[소프트웨어 공학] 소프트웨어 테스팅의 종류
소프트웨어 테스팅의 종류 Black Box Testing (블랙 박스 테스팅): 블랙 박스 테스팅이란 시스템의 내부 설계를 전혀 고려하지 않는 테스팅으로서 고객의 요구사항 등이 담긴 프로그램 명세서를 기반으로 테스팅된다. White Box Testing (화이트 박스 테스팅): 화이트 박스 테스팅이란 블랙 박스 테스팅과는 다르게 시스템의 내부 설계를 고려한 테스팅으로서 시스템의 코드 내부의 로직에 대한 지식을 기반으로 수행된다. 이 테스팅을 수행하기 위해서는 내부적으로 소프트웨어와 코드가 어떻게 동작하는지 알고있어야하며, 커버리지(Coverage)를 통하여 테스팅된다. 커버리지의 종류로는 Path, Statement, Decision, Condition, DC/CD, MC/DC, Multiple Cond..
2015.11.08