Programming 99

[C/C++]연결 큐(Linked Queue)

큐는 자료구조에서 없어서는 안 된다. 큐는 FIFO(First In First Out), 선입선출 구조를 가진 자료구조로 여러군데서 이용이 가능하다. 기수 정렬에서도 사용되고 프로세스 스케줄링과 같은 곳에서도 사용이 된다. 그리고 기타 여러 선입선출 방식을 취할 때 사용된다. 이 코드는 링크를 이용한 큐이다. 1. LinkedQueue.h #include //큐 노드 typedef struct QueueNode{ int item; struct QueueNode *link; } QueueNode; //큐 타입 typedef struct{ QueueNode *front, *rear; } QueueType; //에러 처리 함수 void error(char *message) { fprintf(stderr, "%..

Programming/C, C++ 2012.10.14

[C/C++]최대 히프, 최소 히프

알고리즘을 배우면서 히프라는 것을 많이 보고 쓰게된다. 정렬이라던지 허프만이라던지 기타등등...그래서 여기 최대히프와 최소히프를 올린다. 나도 참고하고 쓰실 분들도 참고하기 바란다. 1. HeapDefine.h 최대 사이즈가 100으로 잡혀있다. 사이즈를 늘리고 싶으면 Define 헤더에서 늘려서 쓰도록하자. #define MAX_ELEMENT 100 //히프 만들 때, 사용하는 히프노드 typedef struct { int heap[MAX_ELEMENT]; int heap_size; } HeapType; 2. MaximamHeap.h #include "HeapDefine.h" //초기화 함수 void initMaxHeap(HeapType *h) { h->heap_size = 0; } //삽입 함수 vo..

Programming/C, C++ 2012.10.14

[Pattern]State Pattern과 Strategy Pattern

프로젝트 네이버 개발자센터 URL : http://developer.naver.com/projects/dpviedorental State Pattern과 Strategy Pattern을 이용하여 기존의 코드는 최대한 건드리지 않고 클라이언트 코드만 수정하여 구현하도록 만들었다. 아직 디자인패턴을 배우는 단계이지만 최대한 OCP를 지키면서 구현하려고 노력했다. 객체지향에서는 모든 변화의 단위를 클래스로 표현한다. 그렇게 작성해야 차후에 변경(유지/보수)이 편리하기 때문이다. 변화의 단위 중에 상태와 전략(알고리즘)을 구현하는 설계패턴에 대해서 알아보자. State Pattern스테이트 패턴은 상태를 클래스로 표현한다. 상태를 클래스로 표현하면 상태의 변화를 클래스의 교체를 통해서 나타낼 수 있다. 새로운 ..

[Eclipse] 이클립스 단축키

소스단축키1. 클래스나 메소드,멤버를 상세하게 검색하고자 할때 : ctrl + 마우스커서(F3) 2. 해당클래스의 Hierarchy를 보려고 할때 : 클래스명 선택하고 F4 이동 단축키 1. 열린 파일 모두 닫기 : CTRL + SHIFT + F4 2. 한줄 삭제 : CTRL + D 3. 현재 줄 이동 : ALT + UP or DOWN 4. Editor 로 커서 이동(컴파일 중 에러등으로 포커스가 다른데로 갔을 때) : F12 5. 특정 줄번호로 가기 : CTRL + L 6. 다음 문제(오류부분으로 가기) : CTRL + .(점) 7. 이전 문제(오류부분으로 가기) : CTRL + ,(콤마) 8. 다음(이전) 편집창으로 이동(윈도우에서의 Ctrl+Tab 과 같은 기능) : CTRL + (Shift) + ..

Programming/Tool 2012.09.29

[tortoiseSVN] Windows에서 tortoiseSVN을 이용한 SVN 사용하기

SVN은 프로젝트를 공동으로 수행함에 있어서 없어서는 안 될 정도로 무지하게 편리한 개발툴이다. 여러 사람이 공동의 레파지토리에 소스코드를 등록하고 빼올 수 있을 뿐만아니라 코멘트도 달 수 있고 자동으로 버전관리도 해준다. 히스토리를 이용하면 자신이 원하는 리비전으로 되돌릴 수도 있으며 각 리비전 사이의 소스코드의 변화도 한눈에 알 수 있다. 그러면 이렇게 편리한 SVN을 사용하려면 어떻게 해야하는가?? 필자는 Windows에서는 tortoiseSVN을 애용하고 Mac OS에서는 SVNX를 애용한다. 여기서는 tortoiseSVN에 대해서 배워보자!! tortoiseSVN 다운로드 URL : http://tortoisesvn.net/downloads.html 일단 tortoiseSVN을 다운 받는다. 그..

Programming/Tool 2012.09.27

[C/C++]C를 이용한 이진탐색트리 라이브러리

과제로 이진탐색트리를 구현하였다. 이진탐색트리를 다음에 이용할 때는 이 라이브러리를 이용하여 구현한다면 다음부터 이진탐색트리의 구현이 매우 편리해질 것같다. 1. BSTError.h 이진탐색트리에서 발생하는 에러 중에 필자가 직접 확인한 에러들에 관한 에러코드들을 규정했다. //에러 코드 #define BST_OK 0x00000000 #define BST_MALLOC_FAIL 0xff000001 #define BST_KEY_ALREADY_EXIST 0xff000002 #define BST_KEY_NOT_EXIST 0xff000003 #define BST_NODE_IS_NULL 0xff000004 2. BST.h 이진탐색트리에 관한 소스이다. 이진탐색트리의 노드와 삽입, 삭제, 순회에 관한 코드들이 구현되..

Programming/C, C++ 2012.09.26

[Android]전자지문 얻기(MD5)

안드로이드에서 개발을 할 때에 까다로운 부분이 맵 API를 사용하는 부분이다. 구글의 맵 API에 접근하기 위해서 전자지문을 이용해야하기 때문이다. 우선 전자지문을 얻기위해서 자바의 환경변수가 설정되어 있어야한다. 자바의 화경변수가 설정되어 있는 상태에서 CMD를 띄우고 밑에 있는 명령어를 입력하면 된다. keytool -v -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android 명령어를 밑의 사진과 같은 화면이 나오게 된다. 사진에 나오는 3종류의 전자지문 중에 구글 맵 API에 접근하기 위해서 사용되는 지문은 MD5이다.

Programming/Android 2012.09.23

[Pattern]Singleton Pattern

프로그래밍을 하다보면 공통된 객체를 여러 객체에서 사용할 때가 생긴다. 그럴 때, 싱글톤 패턴을 이용하면 상당히 깔끌하게 해결된다. 싱글톤을 이용하는 코드는 밑에와 같다. public class Instance { private static Instance instance; public Instance(){ } public static Instance getInstance(){ if(instance == null){ System.out.println("make Single Instance"); instance = new Instance(); } return instance; } public void testInstance(){ System.out.print("test Singleton Instance")..

[C/C++]MySQL을 C로 연동하는 소스

MySQL을 C로 연동해 보았다. 예전에 진자게 해본 것이지만 이번 기회에 라이브러리 처럼 정리해서 계속 사용하기 위해서 다시 한 번 만들어 봤다. 간단한 함수 몇개를 만들고 각 사항에 대한 에러코드를 만들었다. 1. dbError.h 각 에러들이 기술되어있는 헤더파일이다. 이런 식으로 에러를 기술해 놓으면 어느 부분에서 에러가 났는지 찾기가 쉬워진다. #define MB_RES unsigned int #define MB_OK 0x00000000 #define DB_INIT_ERROR 0xff000000 #define DB_CONNECTION_ERROR 0xff000001 #define DB_QUERY_EXECUTION_ERROR 0xff000002 #define DB_FETCH_FAIL 0xff0000..

Programming/C, C++ 2012.08.05